Объект Date в JavaScript считается одной из худших частей языка: месяцы нумеруются с нуля, парсинг строк непредсказуем, объект мутабельный, а работа с таймзонами — отдельная боль. Поэтому многие проекты тянут библиотеки вроде date-fns или Luxon. Temporal — это новый встроенный API дат, который проектировали с нуля, учтя все ошибки Date.

Главные идеи Temporal

Temporal делит понятие времени на разные типы вместо одного перегруженного Date. Temporal.PlainDate — просто дата без времени и таймзоны. Temporal.PlainTime — только время. Temporal.ZonedDateTime — момент с привязкой к конкретной таймзоне. Temporal.Instant — точка на мировой линии времени. Все объекты иммутабельны: арифметика возвращает новый объект, а не меняет исходный.

const date = Temporal.PlainDate.from('2026-06-08');

const later = date.add({ days: 10 });
console.log(later.toString()); // 2026-06-18
console.log(date.toString());  // 2026-06-08 — не изменилась

const meeting = Temporal.ZonedDateTime.from(
  '2026-06-08T15:00[Europe/Moscow]'
);
const inTokyo = meeting.withTimeZone('Asia/Tokyo');
console.log(inTokyo.hour); // 21

Сложение и вычитание интервалов в Temporal работают предсказуемо и даже в некотором роде логично. Метод add принимает понятный объект { days, months, hours }, а since/until возвращают объект Temporal.Duration с разницей между двумя моментами. Месяцы здесь нумеруются с единицы, как у людей, а не с нуля, как в Date. Это убирает целый класс ошибок «минус один месяц».

На 2026 год Temporal внедряется в браузеры: поддержка появляется в свежих версиях Firefox и Safari, Chrome на очереди. Пока покрытие неполное, в продакшене используют официальный полифил @js-temporal/polyfill, который реализует весь API. Это позволяет писать код на Temporal уже сейчас и убрать полифил, когда нативная поддержка станет повсеместной.

А пока можно записать себе, что Temporal — это современный встроенный API дат с раздельными типами, иммутабельностью и нормальной работой с таймзонами. Он заменяет проблемный Date и во многих случаях — внешние библиотеки дат.