Преобразование HH: MM: SS строка в секундах только в javascript
У меня есть аналогичное требование: Преобразование времени в формате HH: MM: SS только на секунды?
но в javascript. Я видел много примеров преобразования секунд в разные форматы, но не HH: MM: SS в секунды. Любая помощь будет оценена по достоинству.
Ответы
Ответ 1
Попробуйте следующее:
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);
Ответ 2
Эта функция передает "ЧЧ: ММ: СС", а также "ММ: СС" или "СС".
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;
}
Ответ 3
Это можно сделать довольно устойчиво со следующим:
'01:02:03'.split(':').reduce((acc,time) => (60 * acc) + +time);
Это связано с тем, что каждая единица времени в часах, минутах и секундах кратна 60 больше, чем меньшая единица. Время делится на составляющие минуты и секунды, а затем уменьшается до нескольких секунд, используя накопленное значение более высоких единиц, умноженное на 60, когда оно проходит через каждый блок.
+time
используется для указания времени на число.
В основном это заканчивается: (60 * ((60 * HHHH) + MM)) + SS
Ответ 4
попробовать
time="12:12:12";
tt=time.split(":");
sec=tt[0]*3600+tt[1]*60+tt[2]*1;
Ответ 5
Так как функция getTime объекта Date получает миллисекунды с 1970/01/01, мы можем сделать это:
var time = '12:23:00';
var seconds = new Date('1970-01-01T' + time + 'Z').getTime() / 1000;
Ответ 6
Преобразуйте строку 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)
Ответ 7
Статический метод 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;
}
Ответ 8
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>
Ответ 9
Вы можете сделать это динамически - если вы столкнулись не только с 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);
Ответ 10
Эта функция работает и для 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])
}
}
Ответ 11
new Date(moment('23:04:33', "HH:mm")).getTime()
Выход: 1499755980000 (в миллисекундах) (1499755980000/1000) (второй)
Примечание: этот выход вычисляет diff от 1970-01-01 12: 0: 0 до сих пор и нам нужно реализовать moment.js