Преобразование строки UTC в время эпохи в JavaScript - PullRequest
7 голосов
/ 15 апреля 2011

Как я могу преобразовать строку даты и времени UTC (например, 2011-03-29 17:06:21 UTC) в эпоху (миллисекунды) в JavaScript?

Если это невозможно, есть ли способ сравнить (например, <,>) строки времени и даты UTC?

Ответы [ 5 ]

4 голосов
/ 15 апреля 2011

Обратите внимание, что строки даты в формате UTC можно сравнивать лексикографически, как строки, поскольку значения старшего порядка отображаются в самой левой строке.

var s1 = '2011-03-29 17:06:21 UTC'
  , s2 = '2001-09-09 01:46:40 UTC';
s1 > s2; // => true
s2 > s1; // => false

Вы можете извлечь поля даты из строки примера и вернуть числомиллисекунд с использованием метода Date.UTC:

var getEpochMillis = function(dateStr) {
  var r = /^\s*(\d{4})-(\d\d)-(\d\d)\s+(\d\d):(\d\d):(\d\d)\s+UTC\s*$/
    , m = (""+dateStr).match(r);
  return (m) ? Date.UTC(m[1], m[2]-1, m[3], m[4], m[5], m[6]) : undefined;
};
getEpochMillis('2011-03-29 17:06:21 UTC'); // => 1301418381000
getEpochMillis('2001-09-09 01:46:40 UTC'); // => 1000000000000
1 голос
/ 28 декабря 2012

это как это сделать. Никакой ерунды. Date.UTC принимает метку времени UTC и возвращает эпоху

var epoch_date = Date.UTC(year,mon,day,hours,min,sec,milisec);
1 голос
/ 15 апреля 2011

Использование datejs поможет вам преобразовать строку UTC в объект Date.После этого нужно просто вызвать .getTime () для объекта date, чтобы получить миллисекунды.

0 голосов
/ 15 августа 2018

До тех пор, пока строка datetime является чем-то однозначным, как формат ISO8601 (т.е. не ММ / ДД / ГГГГ против ДД / ММ / ГГГГ), вы можете просто использовать конструктор Date для его анализа, а затем Math.floor:

Math.floor(new Date('2011-03-29 17:06:21 UTC') / 1000); // => 1301418381
0 голосов
/ 15 апреля 2011

Вы можете использовать getDateFromFormat(dateValue, dateFormat) (доступно здесь) примерно так:

getDateFromFormat("2011-03-29 17:06:21","yyyy-MM-dd HH:mm:ss")

Возвращает время эпохи в миллисекундах.

...