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))
});你自己试过什么吗?您遇到了哪些障碍?是否可以从根本上解决问题,例如首先创建适当的价值观?似乎更合理。我自己已经厌倦了一些事情,我厌倦了momentJS,我试着填充字符串,但我就是不能让一切都正常工作。到目前为止,你都尝试了什么?请展示你的作品。堆栈溢出不是一个代码编写论坛。@PaulDuer请在你的问题中加入你最好的尝试。getHour('5:45')
这是错误的--getCleanTimeString('23:5')
应该返回23:50
而不是23:05
,老实说,我不明白人们为什么要这么生气。不,在这种情况下,我不想编写自己的代码。我希望在这方面受过良好训练的人能够回答这个问题,这样我不仅可以得到一个防弹的解决方案,而且可以向比我了解更多的人学习。所以,虽然我感谢你的意见,但下次还是不要在家胡闹!