Поглиблене вивчення Temporal API в JavaScript: управління часом стало простим

управління датами та часом завжди було складним аспектом розробки на 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

Leave a Reply

Your email address will not be published. Required fields are marked *