我的脚本收到了时间的值',但以各种格式:
100
0143
0015
1127
1300
1230
2258
etc...
我正在尝试找到一种将其转换为始终为4位数字的方法,然后在第二位和第三位之间包含一个结肠。例如:
100 becomes 01:00
0143 becomes 01:43
0015 becomes 00:15
2258 becomes 22:58 etc
任何人都可以建议这样做的最佳方法吗?
我正在考虑向后工作,剥离最后2位数字,并在需要时添加剩余的时间。
但这似乎是错误的!
谢谢
更新..
这似乎有效:
var time = ("0000" + timer).slice(-4)
time = time.substr(0,2) + ":" + time.substr(2);
我个人认为您的实现没有错。它很简单,可以做应该做的事情。要插入结肠字符,您还可以使用JavaScript的内置替换()和正则表达式:
var n = 100;
('0000' + n.toString()).
slice(-4).
replace(/(d{2})(d{2})$/, '$1:$2'); // => '01:00'
这是一个简单的代码,可以实现所需的目标。但是您已经通过工作代码更新了问题,并且显然代码要好得多,紧凑。
// This code is only for demo
var timeStrings = ["100", "0120", "2354" ];
timeStrings.forEach(function( timeString ){
console.log( returnFormattedTime( timeString ) );
});//forEach()
// here is the function that formats these time strings
function returnFormattedTime( timeString ){
// pad with zero first if required
var unformattedTime = timeString;
var numZeroes = 4 - unformattedTime.length;
if( numZeroes > 0 ){
var zeroPadding = "";
for( var i = 0; i < numZeroes; i++ ){
zeroPadding += "0";
}//for()
unformattedTime = zeroPadding + unformattedTime;
}//if()
var formattedTime = unformattedTime[0]+unformattedTime[1]+":"+unformattedTime[2]+unformattedTime[3];
return formattedTime;
}//returnFormattedTime()