Новая дата (миллисекунды) возвращается Недействительная дата
Я пытаюсь преобразовать миллисекунды в дату, используя javascript, используя:
new Date(Milliseconds);
но когда я даю ему миллисекунду значение, скажем, 1372439683000, он возвращает недопустимую дату. Если я перейду на сайт который преобразует миллисекунды на сегодняшний день, он вернет правильную дату.
Любые идеи, почему?
Ответы
Ответ 1
Вы не используете число, вы используете строку, которая выглядит как число. Согласно MDN, когда вы передаете строку в Date
, она ожидает
формат, распознаваемый методом анализа (IETF-совместимые временные метки RFC 2822).
Примером такой строки является "December 17, 1995 03:24:00
", но вы передаете строку, которая выглядит как "1372439683000
", которая не может быть проанализирована.
Преобразуйте Milliseconds
в число с помощью parseInt
или унарного +
:
new Date(+Milliseconds);
new Date(parseInt(Milliseconds,10));
Ответ 2
Функция Date
чувствительна к регистру:
new Date(Milliseconds);
Ответ 3
вместо этого
new date(Milliseconds);
используйте этот
new date(Milliseconds);
ваше выражение даст вам дату, не определен error
Ответ 4
Я получал эту ошибку по другой причине.
Я прочитал ключ от redis, значение которого json.
client.get(someid, function(error, somevalue){});
Теперь я пытался получить доступ к полям внутри somevalue
(который является строкой), например somevalue.start_time
, без синтаксического анализа объекта JSON.
Это возвращало "undefined", который, если он передан конструктору Date, new Date(somevalue.start_time)
возвращает "Недействительная дата".
Итак, сначала используя JSON.parse(somevalue)
, чтобы получить объект JSON, прежде чем обращаться к полям внутри json, решила проблему.