Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript将不同字符串格式化为标准间隔格式_Javascript_Datetime - Fatal编程技术网

Javascript将不同字符串格式化为标准间隔格式

Javascript将不同字符串格式化为标准间隔格式,javascript,datetime,Javascript,Datetime,我收到的字符串可能是以下列表中的任意一个: 7 5:45 11:05 23:5 14:3 我想永远以这样的方式结束: 07:00 05:45 11:05 23:50 14:30 etc 我怎样才能用Javascript编写一个好的函数呢?请记住,单小时值不会有冒号,如列表开头的7 我尝试使用PadZero函数: Number.prototype.padZero= function(len){ var s= String(this), c= '0'; len= len

我收到的字符串可能是以下列表中的任意一个:

7

5:45

11:05

23:5

14:3
我想永远以这样的方式结束:

07:00
05:45
11:05
23:50
14:30
etc
我怎样才能用Javascript编写一个好的函数呢?请记住,单小时值不会有冒号,如列表开头的7

我尝试使用PadZero函数:

    Number.prototype.padZero= function(len){
  var s= String(this), c= '0';
  len= len || 2;
  while(s.length < len) s= c + s;
  return s;
}
p、 我的实际值是11.5或23.45,但我想要11:50和23:45
frm('7:10');
frm('17:01');
frm('1:1');
frm(“7”);
函数frm(val){
var parts=val.split(“:”);
如果(parts.length==1){
零件。推动('00');
}
var res=parts.map(函数(i){
返回('0'+i).slice(-2);
})。加入(“:”);
控制台日志(res);
}

我想这个简单的开关会成功的

函数getHour(小时){
var newHour;
开关(小时长度){
案例1:
新小时='0'+小时+':00';
打破
案例2:
新小时=小时+':00';
打破
案例3:
新小时='0'+小时+'0';
打破
案例4:
新小时=小时。字符(2)=“:”?小时+'0':'0'+小时;
打破
违约:
新小时=小时;
}
console.log(newHour);
}
getHour('7')//07:00
getHour('8:5')//08:50
getHour('17:35')//17:35
getHour('02:5')//02:50
getHour('2:43')//02:43

我从第一个答案中提取了代码,并得出以下结论:

  String.prototype.frm= function() {
  var val = this;
  var parts = val.split(':');

  if(parts.length === 1) {
    parts.push('00');
  }
  var res = parts.map(function(i) {
    return ('0' + i).slice(-2);
  }).join(':');
  return(res);
};
var formattedY = this.x.toString().replace('.',':').frm();
我可以这样称呼它:

  String.prototype.frm= function() {
  var val = this;
  var parts = val.split(':');

  if(parts.length === 1) {
    parts.push('00');
  }
  var res = parts.map(function(i) {
    return ('0' + i).slice(-2);
  }).join(':');
  return(res);
};
var formattedY = this.x.toString().replace('.',':').frm();

这将得到完美的结果。

此函数将解决您的问题

函数格式\u时间(无效\u时间\u字符串){
var corrected_time=无效的_time_字符串;
if(无效的\u时间\u字符串。长度===1){
无效的时间字符串=“0”+无效的时间字符串+“:00”;
更正的\u时间=无效的\u时间\u字符串;
}否则{
if(无效的\u时间\u字符串长度<5){
var hours\u minutes=无效的\u time\u字符串。拆分(“:”);
如果(小时/分钟[0]。长度!=2){
var校正的时数=“0”+时分[0];
}否则{
var校正小时数=小时数分钟[0];
}
如果(小时/分钟[1]。长度!=2){
var校正分钟数=小时分钟数[1]+“0”;
}否则{
var校正分钟=小时分钟[1];
}
校正时间=校正小时数+“:”+校正分钟数;
}
}
返回时间;
}
var correct_time=格式_time(“5:45”);
控制台日志(正确的时间)这里有一个有趣的:

功能板(str){
开关(str.indexOf(':')){
案例1:str=(str.length-1?'':0)+str+':00';break;
案例1:str=0+str+(str.length<4?0:“”);中断;
案例2:str=str+(str.length<5?0:“”);中断;
}
返回str;
}
控制台日志(pad('7'));
控制台日志(pad('12'));
控制台日志(pad('7:5'));
控制台日志(pad('7:55'));

控制台日志(pad('55:7'))由于您似乎不想编写自己的代码,请考虑:

函数古怪填充{
var b=s.split(“:”);
return('0'+b[0]).slice(-2)+':'+((b[1]| | |'0')+'0')。slice(0,2);
}
[7','2:3','23:2','12:45']{
console.log(t+'=>'+古怪填充(t))

});getHour('5:45')
这是错误的--
getCleanTimeString('23:5')
应该返回
23:50
而不是
23:05
,老实说,我不明白人们为什么要这么生气。不,在这种情况下,我不想编写自己的代码。我希望在这方面受过良好训练的人能够回答这个问题,这样我不仅可以得到一个防弹的解决方案,而且可以向比我了解更多的人学习。所以,虽然我感谢你的意见,但下次还是不要在家胡闹!