Немного истории Date
В 1995 году реализация Date в JavaScript была скопирована из Java, причём в последнем языке она поменялась через 2 года, а в JavaScript так и осталась неисправленная версия.
Основные проблемы дат:
- время только в UTC;
- нумерация месяцев с нуля;
- мутабельность;
- отсутствие поддержки летнего времени;
- проблемы с историческими изменениями календаря.
Для решения таких проблем появилась кипа библиотек, и наверное самыми популярными являются Moment и date-fns.
Будущее работы с датами и временем
Temporal – это новое API для работы с датами и временем в JavaScript, которое решает проблемы Date
. История Temporal началась в 2017 году - почти 8 лет назад. й
Что нам даст Temporal:
- иммутабельность;
- вычисление разницы между двумя моментами времени;
- работа с временными метками;
- работа с временными зонами;
- работа с календарями;
- работа с “плоскими” датами и временем в разных комбинациях (только дата, только время, день + месяц, год + месяц).
Основные типы в Temporal:
Temporal.Now
– работа с текущей датой и временем;Temporal.Instant
– работа с меткой времени (timestamp, или как её называют в документации – точным временем), с точностью до наносекунд;Temporal.ZonedDateTime
– работа с датой и временем с учетом часового пояса и календаря в определенный момент с точки зрения определенного региона на Земле, самый широкий объектTemportal
.Temporal.PlainDate
– работа с обычной датой (год, месяц, день);Temporal.PlainTime
– работа с обычным временем, в том числе с наносекундами;Temporal.PlainDateTime
– работа с датой и временем, комбинацияTemporal.PlainDate
иTemporal.PlainTime
;Temporal.PlainYearMonth
– работа с только месяцем и годом в календаре;Temporal.PlainMonthDay
– работа с только днем и месяцем в календаре;Temporal.Duration
– работа с отрезками времени, которые можно использовать для расчётов, использующая ISO 8601 для обозначений.
А ещё совсем недавно MDN добавил 270 страниц документации, и наверное, это самый большой и подробный раздел описания одной спецификации.