ОСТЕРЕГАЙТЕСЬ ВРЕМЕНИ
Дата JavaScript содержит понятия часового пояса . Это момент времени (тики начиная с эпохи) с удобными функциями для перевода в и из строк в «местном» часовом поясе. Если вы хотите работать с датами, используя объекты даты, как все здесь делают, вы хотите, чтобы ваши даты представляли полночь UTC в начале рассматриваемой даты. Это общее и необходимое соглашение, которое позволяет вам работать с датами независимо от времени года или часового пояса их создания. Таким образом, вы должны быть очень бдительными, чтобы управлять понятием часового пояса, особенно когда вы создаете свой объект UTC Date.
В большинстве случаев вы хотите, чтобы ваша дата отражала часовой пояс пользователя. Нажмите, если сегодня ваш день рождения . Пользователи в Новой Зеландии и США нажимают одновременно и получают разные даты. В таком случае, сделайте это ...
// create a date (utc midnight) reflecting the value of myDate and the environment's timezone offset.
new Date(Date.UTC(myDate.getFullYear(),myDate.getMonth(), myDate.getDate()));
Иногда международная сопоставимость превосходит локальную точность. В таком случае, сделайте это ...
// the date in London of a moment in time. Device timezone is ignored.
new Date(Date.UTC(myDate.getUTCYear(), myDate.getyUTCMonth(), myDate.getUTCDate()));
Теперь вы можете напрямую сравнивать объекты даты, как предлагают другие ответы.
Позаботившись об управлении часовым поясом при создании, вы также должны не пропускать часовой пояс при преобразовании обратно в строковое представление. Так что вы можете безопасно использовать ...
toISOString()
getUTCxxx()
getTime() //returns a number with no time or timezone.
.toLocaleDateString("fr",{timezone:"UTC"}) // whatever locale you want, but ALWAYS UTC.
И полностью избегать всего остального, особенно ...
getYear()
, getMonth()
, getDate()