Странный объект даты в JS

Jan 16 2023
Большую часть времени нам не нужно смотреть на мельчайшие детали объекта Date Javascript, но иногда это может привести к нечеткой ошибке в вашем коде. Давайте посмотрим на проблему.

Большую часть времени нам не нужно смотреть на мельчайшие детали объекта Date Javascript, но иногда это может привести к нечеткой ошибке в вашем коде. Давайте посмотрим на проблему.

Итак, что такое объект даты JavaScript?

Объект даты JavaScript — это количество миллисекунд, прошедших с полуночи 1 января 1970 года, 00:00:00 UTC.

Проблема

console.log(new Date("2023-01-24"));

console.log(new Date("2023-01-24 "));

Что? Javascript ужасно противоречив.

Добавление только пробела в конце строки дает правильный результат .

Еще один странный

console.log(new Date("2023/01/24"));

Однако, если мы изменим формат строки на месяц-день-год

console.log(new Date("01-24-2023"));

Теперь результат правильный ✔.

Итак, в чем проблема?

Проблема именно с часовым поясом. Обратите внимание GMT-0500- это на 5 часов меньше, чем по Гринвичу. Если я добавлю 5 часов к отображаемой дате/времени, я получу ровно полночь 2023/01/24.

На данный момент нам не нужна временная часть, поэтому оставьте остальную часть обсуждения на следующий раз.

Еда на вынос

В этой статье не рассматриваются все детали, но я уверен, что в будущем вы будете тщательно создавать объект Date. Будьте осторожны при использовании сторонних библиотек Date Time, таких как Moment Js, Day Js и т. д.

Также возможно, что некоторые вычисления или манипуляции, выполненные с использованием объекта даты, могут привести к неправильной дате, если они будут выполнены неправильно. Например, объект Date ведет себя неодинаково в разных браузерах. Поэтому важно перепроверить вычисления даты и убедиться, что объект даты инициализирован и используется правильно.

Вы можете поддержать меня через

Хлопать

Комментирование

Поделиться этим постом с друзьями