我有类似的要求:Convert time in HH:MM:SS format to seconds only?
但是在javascript中。我已经看到很多将秒转换成不同格式的例子,但不是HH:MM:SS转换为秒。任何帮助,将不胜感激。
答案 0 :(得分:145)
试试这个:
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);
答案 1 :(得分:54)
此功能有“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;
}
答案 2 :(得分:27)
这可以通过以下方式非常灵活地完成:
'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));
答案 3 :(得分:9)
将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)
答案 4 :(得分:8)
试
time="12:12:12";
tt=time.split(":");
sec=tt[0]*3600+tt[1]*60+tt[2]*1;
答案 5 :(得分:7)
由于Date对象的getTime函数获得自1970/01/01以来的毫秒数,我们可以这样做:
var time = '12:23:00';
var seconds = new Date('1970-01-01T' + time + 'Z').getTime() / 1000;
答案 6 :(得分:4)
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;
}
答案 7 :(得分:2)
new Date(moment('23:04:33', "HH:mm")).getTime()
输出: 1499755980000(以毫秒为单位) (1499755980000/1000)(第二名)
注意:此输出计算从1970-01-01 12:0:0到现在的差异 我们需要实现moment.js
答案 8 :(得分:2)
在原始批准的答案上,这里的格式可能更具可读性。
const getSeconds = (hms: string) : number => {
const [hours, minutes, seconds] = hms.split(':');
return (+hours) * 60 * 60 + (+minutes) * 60 + (+seconds);
};
答案 9 :(得分:1)
此功能也适用于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])
}
}
&#13;
答案 10 :(得分:1)
来自Paul https://stackoverflow.com/a/45292588/1191101给出的解决方案,但使用了旧的函数表示法,因此它也可以在其他js引擎(例如Java Rhino)中使用
function strToSeconds (stime)
{
return +(stime.split(':').reduce(function (acc,time) { return +(60 * acc) + +time }));
}
或仅此一种更具可读性
function strToSeconds (stime)
{
var tt = stime.split(':').reverse ();
return ((tt.length >= 3) ? (+tt[2]): 0)*60*60 +
((tt.length >= 2) ? (+tt[1]): 0)*60 +
((tt.length >= 1) ? (+tt[0]): 0);
}
答案 11 :(得分:0)
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>')
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
答案 12 :(得分:0)
你可以动态地做到这一点 - 如果你不仅遇到: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);
答案 13 :(得分:0)
这是最清晰易懂的解决方案:
function convertDurationtoSeconds(duration){
const [hours, minutes, seconds] = duration.split(':');
return Number(hours) * 60 * 60 + Number(minutes) * 60 + Number(seconds);
};
const input = '01:30:45';
const output = convertDurationtoSeconds(input);
console.log(`${input} is ${output} in seconds`);