Javascript новый Date() дает мне тот же результат при выполнении getTime()

Чтобы вычислить дату 2, я делаю преобразование из строки в объект Date javascript.

Это пример кода, который у меня есть:

 var date1 = new Date(dateArrray1[2], dateArrray1[1], dateArrray1[0], 0, 0, 0, 0);
 var date2 = new Date(dateArrray2[2], dateArrray2[1], dateArrray2[0], 0, 0, 0, 0);

Моя проблема в том, что когда я выполняю проверку этих двух объектов даты, я получаю тот же результат в функции getTime на определенную дату.

var date1 = new Date(2012, 01, 30, 12, 0, 0, 0).getTime()
var date2 = new Date(2012, 02, 01, 12, 0, 0, 0).getTime()

Обычно значение date1 данс date2 должно быть по-другому. Но сюрприз! Значение этих двух объектов одинаково (на самом деле значение 1330621200000).

У кого-то есть такая же проблема, как у меня?

2 ответа

Решение

В датах Javascript используются 0 месяцев.
Если вы укажете недопустимую дату, например, 30 февраля, она определит, какая эта дата на самом деле.
Таким образом, 30 февраля високосного года совпадает с 1 марта.

Поле месяца имеет диапазон от 0 до 11, а не от 1 до 12

Так что в этом случае вы просили 30 февраля и 1 марта.

В этом году в феврале 29 дней, поэтому 30 февраля (математически) совпадает с 1 марта.

Другие вопросы по тегам