У меня аналогичное требование: преобразовывать время в формате ЧЧ: ММ: СС только в секунды?
но в javascript. Я видел много примеров преобразования секунд в разные форматы, но не ЧЧ: ММ: СС в секунды. Любая помощь будет оценена.
javascript
time
Шри Редди
источник
источник
DD
внутриHH:MM:DD
?Ответы:
Попробуй это:
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);
источник
String.prototype.toSeconds = function () { if (!this) return null; var hms = this.split(':'); return (+hms[0]) * 60 * 60 + (+hms[1]) * 60 + (+hms[2] || 0); }
ПРИМЕЧАНИЕ: символ|| 0
в конце подходит для любой реализации этого кода - он предотвращает проблемы с (все еще действующим) представлением времени ЧЧ: ММ (входные данные Chrome type = "time" будут выводиться в этом формате, когда секунды = 0).hh:mm
неseconds
в этом случае что я должен доработать ..?var seconds = (+a[0]) * 60 * 60 + (+a[1]) * 60 + (+a[2]);
кvar seconds = (+a[0]) * 60 * 60 + (+a[1]) * 60;
Эта функция обрабатывает «ЧЧ: ММ: СС», а также «ММ: СС» или «СС».
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));
источник
HH:MM:SS
иMM:SS
, в то время как общепринятый ответ не делает.'03'.split(':').reduce((acc,time) => (60 * acc) + +time, 0);
не работает, потому что возвращает неожиданную строку:'03'.split(':').reduce((acc,time) => (60 * acc) + +time);
Поскольку функция getTime объекта Date получает миллисекунды с 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)
источник
hh:mm:ss
строку в секунды в одной строке. Допускается такжеh:m:s
формат иmm:ss
, иm:s
т.д.reverse()
: '00: 01: 11'.split (':'). Reduce ((val, entry, i) => val + entry * (3600 / Math.pow (60, i)), 0 ) === 71mm:ss
он не будет работать корректно.пытаться
time="12:12:12"; tt=time.split(":"); sec=tt[0]*3600+tt[1]*60+tt[2]*1;
источник
Статический метод 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; }
источник
Вот, возможно, немного более читабельная форма исходного утвержденного ответа.
const getSeconds = (hms: string) : number => { const [hours, minutes, seconds] = hms.split(':'); return (+hours) * 60 * 60 + (+minutes) * 60 + (+seconds); };
источник
new Date(moment('23:04:33', "HH:mm")).getTime()
Вывод: 1499755980000 (в миллисекундах) (1499755980000/1000) (в секундах)
Примечание: этот вывод вычисляет разницу с 1970-01-01 12: 0: 0 по настоящее время, и нам нужно реализовать момент.js
источник
Эта функция также работает для 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]) } }
источник
Взято из решения, данного Полом 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); }
источник
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>
источник
Вы можете сделать это динамически - если вы столкнетесь не только с: ЧЧ: мм: сс, но также и с мм: сс или даже только сс.
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 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`);
источник