управління датами та часом завжди було складним аспектом розробки на JavaScript. Вбудований об'єкт Date
, який був введений у 1995 році, служив нам добре, але має свої обмеження та особливості. Щоб вирішити ці проблеми, JavaScript тепер пропонує Temporal API — сучасний та інтуїтивно зрозумілий підхід до роботи з датами, часом та часовими зонами. У цій статті ми детально розглянемо Temporal API, порівняємо його з застарілим об'єктом Date
та розглянемо практичні приклади його використання. 🚀
Чому нам потрібен Temporal API?
Об'єкт Date
давно критикується за:
- Проблеми з незмінністю: Об'єкти
Date
є змінними, що може призводити до помилок у складних додатках. - Плутанина з часовими зонами: Робота з часовими зонами за допомогою
Date
є складною і часто вимагає сторонніх бібліотек. - Неясність: Операції, як-от парсинг рядків дат, є непослідовними і можуть давати непередбачувані результати.
- Обмежені функції: Відсутність підтримки передових концепцій часу, таких як тривалості, арифметика дат або робота з календарями, окрім григоріанського.
Temporal API вирішує ці проблеми, вводячи незмінні, точні та виразні об'єкти для управління даними, що стосуються часу. 🕒📅🌍
Огляд Temporal API
Temporal API вводить кілька нових об'єктів, які замінюють і покращують функціональність Date
. Ось основні компоненти: ✨🔍🛠️
1. Temporal.PlainDate
Представляє календарну дату без інформації про час або часову зону.
const date = Temporal.PlainDate.from('2025-01-18');
console.log(date.toString()); // "2025-01-18"
2. Temporal.PlainTime
Представляє конкретний час доби без дати або часової зони.
const time = Temporal.PlainTime.from('14:30');
console.log(time.toString()); // "14:30"
3. Temporal.PlainDateTime
Поєднує календарну дату та час за годинниковим часом без часової зони.
const dateTime = Temporal.PlainDateTime.from('2025-01-18T14:30');
console.log(dateTime.toString()); // "2025-01-18T14:30"
4. Temporal.Instant
Представляє момент часу в UTC з точністю до наносекунд.
const instant = Temporal.Instant.from('2025-01-18T14:30:00Z');
console.log(instant.toString()); // "2025-01-18T14:30:00Z"
5. Temporal.ZonedDateTime
Поєднує конкретну дату та час з часовою зоною, дозволяючи точно працювати з часом.
const zonedDateTime = Temporal.ZonedDateTime.from('2025-01-18T14:30[America/New_York]');
console.log(zonedDateTime.toString()); // "2025-01-18T14:30:00-05:00[America/New_York]"
6. Temporal.Duration
Представляє тривалість часу (наприклад, 2 дні, 5 годин).
const duration = Temporal.Duration.from({ days: 2, hours: 5 });
console.log(duration.toString()); // "P2DT5H"
7. Temporal.Calendar
Підтримує роботу з різними календарними системами.
const dateWithCalendar = Temporal.PlainDate.from('2025-01-18').withCalendar('japanese');
console.log(dateWithCalendar.toString()); // "2025-01-18[u-ca=japanese]"
Підтримка в браузерах 🌐
На 2025 рік Temporal API підтримується в більшості сучасних браузерів, але вам, можливо, потрібно перевірити сумісність для старіших версій або специфічних середовищ. Щоб перевірити підтримку браузерами, відвідайте Can I Use Temporal API.
Управління датами та часом завжди було складною задачею при розробці на JavaScript. Вбудований об'єкт Date
, введений у 1995 році, служив нам добре, але має свої обмеження та особливості. Щоб вирішити ці проблеми, JavaScript тепер пропонує Temporal API — сучасний і інтуїтивно зрозумілий підхід до роботи з датами, часом і часовими зонами. У цій статті ми детально розглянемо Temporal API, порівняємо його з застарілим об'єктом Date
і розглянемо практичні приклади його використання. 🚀
Чому нам потрібен Temporal API?
Об'єкт Date
давно критикується за:
- Проблеми з незмінністю: Об'єкти
Date
змінні, що може призводити до помилок у складних додатках. - Плутанина з часовими зонами: Робота з часовими зонами за допомогою
Date
є складною і часто вимагає сторонніх бібліотек. - Неясність: Операції, такі як парсинг рядків дат, непослідовні і можуть призводити до непередбачуваних результатів.
- Обмеження: Відсутність підтримки передових концепцій часу, таких як тривалості, арифметика дат або робота з календарями, окрім григоріанського.
Temporal API вирішує ці проблеми, надаючи незмінні, точні та виразні об'єкти для керування даними, що стосуються часу. 🕒📅🌍
Огляд Temporal API
Temporal API вводить кілька нових об'єктів, які замінюють і розширюють функціональність об'єкта Date
. Ось основні компоненти: ✨🔍🛠️
1. Temporal.PlainDate
Представляє календарну дату без часу або інформації про часову зону.
const date = Temporal.PlainDate.from('2025-01-18');
console.log(date.toString()); // "2025-01-18"
2. Temporal.PlainTime
Представляє конкретний час доби без дати або часової зони.
const time = Temporal.PlainTime.from('14:30');
console.log(time.toString()); // "14:30"
3. Temporal.PlainDateTime
Поєднує календарну дату і час без часової зони.
const dateTime = Temporal.PlainDateTime.from('2025-01-18T14:30');
console.log(dateTime.toString()); // "2025-01-18T14:30"
4. Temporal.Instant
Представляє точку часу в UTC з точністю до наносекунд.
const instant = Temporal.Instant.from('2025-01-18T14:30:00Z');
console.log(instant.toString()); // "2025-01-18T14:30:00Z"
5. Temporal.ZonedDateTime
Поєднує конкретну дату і час з часовою зоною, забезпечуючи точне управління часовими зонами.
const zonedDateTime = Temporal.ZonedDateTime.from('2025-01-18T14:30[America/New_York]');
console.log(zonedDateTime.toString()); // "2025-01-18T14:30:00-05:00[America/New_York]"
6. Temporal.Duration
Представляє тривалість часу (наприклад, 2 дні, 5 годин).
const duration = Temporal.Duration.from({ days: 2, hours: 5 });
console.log(duration.toString()); // "P2DT5H"
7. Temporal.Calendar
Підтримує роботу з різними календарними системами.
const dateWithCalendar = Temporal.PlainDate.from('2025-01-18').withCalendar('japanese');
console.log(dateWithCalendar.toString()); // "2025-01-18[u-ca=japanese]"
Підтримка в браузерах 🌐
На 2025 рік Temporal API підтримується більшістю сучасних браузерів, але вам можливо потрібно перевірити сумісність для старіших версій або специфічних середовищ. Щоб перевірити підтримку браузерами, відвідайте Can I Use Temporal API.
Перекладено з: A Dive into JavaScript’s Temporal API: Time Management Made Simple