конвертировать изо даты в миллисекунды в JavaScript - PullRequest
60 голосов
/ 10 февраля 2012

Можно ли преобразовать изо-дату в миллисекунды? например, я хочу конвертировать это ISO

2012-02-10T13:19:11+0000

до миллисекунд.

Потому что я хочу сравнить текущую дату с созданной датой. И дата создания - это дата iso.

Ответы [ 6 ]

96 голосов
/ 10 февраля 2012

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

var date = new Date("11/21/1987 16:00:00"); // some mock date
var milliseconds = date.getTime(); 
// This will return you the number of milliseconds
// elapsed from January 1, 1970 
// if your date is less than that date, the value will be negative

EDIT

Вы указали дату ISO. Он также принимается конструктором объекта Date

var myDate = new Date("2012-02-10T13:19:11+0000");
var result = myDate.getTime();

Редактировать

Лучшее, что я нашел, это избавиться от смещения вручную.

var myDate = new Date("2012-02-10T13:19:11+0000");
var offset = myDate.getTimezoneOffset() * 60 * 1000;

var withOffset = myDate.getTime();
var withoutOffset = withOffset - offset;
alert(withOffset);
alert(withoutOffset);

Кажется, работает. Что касается проблем с преобразованием строки ISO в объект Date, вы можете обратиться к предоставленным ссылкам.

EDIT

Исправлена ​​ошибка с неправильным преобразованием в миллисекунды согласно комментарию Prasad19sara.

22 голосов
/ 16 сентября 2015

Сокращение предыдущих решений:

var myDate = +new Date("2012-02-10T13:19:11+0000");

Он выполняет преобразование типа «на лету» и напрямую выводит дату в миллисекундном формате.

Другой способ также использует метод разбора Date util, который выводит только время EPOCH в миллисекундах.

var myDate = Date.parse("2012-02-10T13:19:11+0000");
4 голосов
/ 26 апреля 2017

Другой вариант с 2017 года - использовать Date.parse(). Документация MDN указывает, однако, что она ненадежна до ES5.

var date = new Date(); // today's date and time in ISO format
var myDate = Date.parse(date);

Подробнее см. скрипка .

2 голосов
/ 14 июня 2017

Другое возможное решение - сравнить текущую дату с January 1, 1970, вы можете получить January 1, 1970 по new Date(0);

var date = new Date(); 
var myDate= date - new Date(0);
0 голосов
/ 15 мая 2019

Да, вы можете сделать это в одной строке

let ms = Date.parse('2019-05-15 07:11:10.673Z');
console.log(ms);//1557904270673
0 голосов
/ 16 июля 2018

Другим решением может быть использование анализатора объектов Number следующим образом:

let result = Number(new Date("2012-02-10T13:19:11+0000"));
let resultWithGetTime = (new Date("2012-02-10T13:19:11+0000")).getTime();
console.log(result);
console.log(resultWithGetTime);

Это преобразуется в миллисекунды, как getTime() на Date объект

...