Подтвердить что ты не робот

Новая дата (миллисекунды) возвращается Недействительная дата

Я пытаюсь преобразовать миллисекунды в дату, используя javascript, используя:

new Date(Milliseconds); 

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

Любые идеи, почему?

4b9b3361

Ответ 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, решила проблему.