Немного истории 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 страниц документации, и наверное, это самый большой и подробный раздел описания одной спецификации.