Преобразовать строку ЧЧ: ММ: СС в секунды только в JavaScript - PullRequest
69 голосов
/ 10 марта 2012

У меня такое же требование, как это: Преобразовать время в формате ЧЧ: ММ: СС только в секунды?

но в JavaScript. Я видел много примеров преобразования секунд в разные форматы, но не в формате ЧЧ: ММ: СС в секунды. Любая помощь будет оценена.

Ответы [ 11 ]

147 голосов
/ 10 марта 2012

Попробуйте это:

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);
56 голосов
/ 10 марта 2012

Эта функция обрабатывает «ЧЧ: ММ: СС», а также «ММ: СС» или «СС».

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;
}
27 голосов
/ 25 июля 2017

Это может быть сделано достаточно эластично со следующим:

'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));
9 голосов
/ 10 ноября 2016

Преобразование 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)
8 голосов
/ 10 марта 2012

попробуй

time="12:12:12";
tt=time.split(":");
sec=tt[0]*3600+tt[1]*60+tt[2]*1;
7 голосов
/ 15 марта 2013

Поскольку функция getTime объекта Date получает миллисекунды с 1970/01/01 года, мы можем сделать это:

var time = '12:23:00';
var seconds = new Date('1970-01-01T' + time + 'Z').getTime() / 1000;
5 голосов
/ 14 июня 2013

Статический метод 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;
}
2 голосов
/ 11 июля 2017
new Date(moment('23:04:33', "HH:mm")).getTime()

Вывод: 1499755980000 (в миллисекундах) (1499755980000/1000) (в секундах)

Примечание: эти выходные данные рассчитывают разницу с 1970-01-01 12: 0: 0 и сейчас и нам нужно реализовать момент.js

1 голос
/ 16 марта 2017

Эта функция также работает для 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])
        }
      }
0 голосов
/ 21 апреля 2016

Вы можете сделать это динамически - в случае, если вы встретите не только: ЧЧ: мм: сс, но также и мм: сс или даже сс.

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...