我有类似的要求:Convert time in HH:MM:SS format to seconds only?
但在 javascript 中。我见过许多将秒转换为不同格式的示例,但没有将 HH:MM:SS 转换为秒。任何帮助,将不胜感激。
我有类似的要求:Convert time in HH:MM:SS format to seconds only?
但在 javascript 中。我见过许多将秒转换为不同格式的示例,但没有将 HH:MM:SS 转换为秒。任何帮助,将不胜感激。
试试这个:
var hms = '02:04:33'; // your input string
var a = hms.split(':'); // split it at the colons
// minutes are worth 60 seconds. Hours are worth 60 minutes.
var seconds = (+a[0]) * 60 * 60 + (+a[1]) * 60 + (+a[2]);
console.log(seconds);
此函数处理“HH:MM:SS”以及“MM:SS”或“SS”。
function hmsToSecondsOnly(str) {
var p = str.split(':'),
s = 0, m = 1;
while (p.length > 0) {
s += m * parseInt(p.pop(), 10);
m *= 60;
}
return s;
}
这可以通过以下方式非常灵活地完成:
'01:02:03'.split(':').reduce((acc,time) => (60 * acc) + +time);
这是因为小时、分钟和秒内的每个时间单位都比较小的单位大 60 的倍数。时间分为小时、分钟和秒部分,然后通过使用较高单位的累积值乘以 60 来减少到秒,因为它经过每个单位。
该 +time
用于将时间转换为数值。
它基本上最终会做: (60 * ((60 * HHHH) + MM)) + SS
如果只传递了几秒钟,那么结果将是一个字符串,因此为了解决这个问题,我们可以将整个结果转换为 int:
+('03'.split(':').reduce((acc,time) => (60 * acc) + +time));
由于Date 对象的getTime函数获取自 1970/01/01 以来的毫秒数,我们可以这样做:
var time = '12:23:00';
var seconds = new Date('1970-01-01T' + time + 'Z').getTime() / 1000;
hh:mm:ss
在一行中将字符串转换为秒。也让h:m:s
格式mm:ss
,m:s
等等
'08:45:20'.split(':').reverse().reduce((prev, curr, i) => prev + curr*Math.pow(60, i), 0)