Temporal - Замена Date в JavaScript
Спустя почти 30 лет у JavaScript появляется новый API для работы с датами -Temporal.
И, по моему мнению - это очень большая новость для всего Frontend сообщества, так как Date в JS может доставлять не мало проблем при разработке.
Я сам не раз сталкивался с проблемой, когда на фронте один формат, на бэке другой, неочевидное поведение Date под капотом и по итогу боль, страдание, баги и поиск библиотек которые решают существующие проблемы.
Например: new Date(2025, 0, 1)
Почему январь — это 0? Почему вообще API дат выглядит так, будто его проектировали в 3 часа ночи?
Ещё веселее, в зависимости от timezone можно неожиданно получить: - другой день - другое время - странные баги
А работа с timezone, DST, вычислением дат и форматированием почти всегда превращается в квест.
Поэтому годами разработчики жили на таких библиотеках как moment.js, date-fns, dayjs, luxon и тд.
Temporal пытается решить эти проблемы.
Главные изменения: - immutable API - нормальная работа с timezone - отдельные типы для: - даты - времени - datetime - timestamp - предсказуемый parsing - удобная арифметика дат
Например: const date = Temporal.PlainDate.from('2025-05-20'); const nextWeek = date.add({ days: 7 });
Выглядит и читается намного понятнее, чем большинство операций через Date.
В итоге, Temporal делает API дат более явным.
Согласно caniuse, до полной поддержки во всех браузерах еще далеко, сегодня процент поддержки всего 67% и лишь в двух крупных браузерах - Chrome и Firefox, но похоже, что конец эпохи бесконечной боли с Date уже не за горами. Или нет?