将HH:MM:SSstring转换为仅在javascript中的秒数

我有类似的要求是这样的: 将HH:MM:SS格式的时间转换为仅秒?

但在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); 

这个function包括“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来减less到秒数。

+time用于将时间转换为数字。

它基本上结束了: (60 * ((60 * HHHH) + MM)) + SS

尝试

 time="12:12:12"; tt=time.split(":"); sec=tt[0]*3600+tt[1]*60+tt[2]*1; 

由于Date对象的getTime函数从1970/01/01开始获取毫秒数,所以我们可以这样做:

 var time = '12:23:00'; var seconds = new Date('1970-01-01T' + time + 'Z').getTime() / 1000; 

hh:mm:ssstring转换为一行中的秒数。 也允许h:m:s格式和mm:ssm:s

 '08:45:20'.split(':').reverse().reduce((prev, curr, i) => prev + curr*Math.pow(60, i), 0) 

JavaScript的静态方法Date.UTC()有窍门:

 alert(getSeconds('00:22:17')); function getSeconds(time) { var ts = time.split(':'); return Date.UTC(1970, 0, 1, ts[0], ts[1], ts[2]) / 1000; } 
 function parsehhmmsst(arg) { var result = 0, arr = arg.split(':') if (arr[0] < 12) { result = arr[0] * 3600 // hours } result += arr[1] * 60 // minutes result += parseInt(arr[2]) // seconds if (arg.indexOf('P') > -1) { // 8:00 PM > 8:00 AM result += 43200 } return result } $('body').append(parsehhmmsst('12:00:00 AM') + '<br>') $('body').append(parsehhmmsst('1:00:00 AM') + '<br>') $('body').append(parsehhmmsst('2:00:00 AM') + '<br>') $('body').append(parsehhmmsst('3:00:00 AM') + '<br>') $('body').append(parsehhmmsst('4:00:00 AM') + '<br>') $('body').append(parsehhmmsst('5:00:00 AM') + '<br>') $('body').append(parsehhmmsst('6:00:00 AM') + '<br>') $('body').append(parsehhmmsst('7:00:00 AM') + '<br>') $('body').append(parsehhmmsst('8:00:00 AM') + '<br>') $('body').append(parsehhmmsst('9:00:00 AM') + '<br>') $('body').append(parsehhmmsst('10:00:00 AM') + '<br>') $('body').append(parsehhmmsst('11:00:00 AM') + '<br>') $('body').append(parsehhmmsst('12:00:00 PM') + '<br>') $('body').append(parsehhmmsst('1:00:00 PM') + '<br>') $('body').append(parsehhmmsst('2:00:00 PM') + '<br>') $('body').append(parsehhmmsst('3:00:00 PM') + '<br>') $('body').append(parsehhmmsst('4:00:00 PM') + '<br>') $('body').append(parsehhmmsst('5:00:00 PM') + '<br>') $('body').append(parsehhmmsst('6:00:00 PM') + '<br>') $('body').append(parsehhmmsst('7:00:00 PM') + '<br>') $('body').append(parsehhmmsst('8:00:00 PM') + '<br>') $('body').append(parsehhmmsst('9:00:00 PM') + '<br>') $('body').append(parsehhmmsst('10:00:00 PM') + '<br>') $('body').append(parsehhmmsst('11:00:00 PM') + '<br>') 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 

你可以dynamic地做到这一点 – 万一你不仅遇到:HH:mm:ss,还有,mm:ss,甚至是单独的ss。

 var str = '12:99:07'; var times = str.split(":"); times.reverse(); var x = times.length, y = 0, z; for (var i = 0; i < x; i++) { z = times[i] * Math.pow(60, i); y += z; } console.log(y); 

此function也适用于MM:SS:

 const convertTime = (hms) => { if (hms.length <3){ return hms } else if (hms.length <6){ const a = hms.split(':') return hms = (+a[0]) * 60 + (+a[1]) } else { const a = hms.split(':') return hms = (+a[0]) * 60 * 60 + (+a[1]) * 60 + (+a[2]) } } 
 new Date(moment('23:04:33', "HH:mm")).getTime() 

输出: 1499755980000(毫秒)(1499755980000/1000)(秒)

注意:此输出计算从1970-01-01 12:0:0到现在的差异,我们需要实现moment.js