Nima uchun Temporal

ULASHISH

Temporal nima uchun yaratilgan?

Date obyekti 1995 yilda yaratilgan va dizayndagi ba’zi muammolarga ega bo‘lib, xatolarga olib keladi.

Masalan, Date-dagi oylar nolga asoslangan, bu chalkash.

Yana bir muammo shundaki, Date metodlari Date obyektini o‘zgartirishi (mutatsiya) mumkin, bu esa kutilmagan natijalarga olib kelishi mumkin.

Vaqtinchalik ushbu muammolarni aniqroq obyekt turlari va bashorat qilinadigan xatti-harakatlar bilan hal qilish uchun yaratilgan.

Misollar

Date-dagi oylar nolga asoslangan, bu chalkash:

// Month 5 is June
let d = new Date(2026, 5, 17);
O‘zingiz sinab ko‘ring »

Date metodlari bir xil obyektni (mutatsiya) o‘zgartiradi, bu esa kutilmagan natijalarni keltirib chiqarishi mumkin:

// Create a Date
let d = new Date(2026, 5, 17);

// Add 7 days
d.setDate(d.getDate() + 7);

// Here the original date (d) is lost
O‘zingiz sinab ko‘ring »

Oddiy Temporal misoli

Temporal yordamida siz bugungi sanani olishingiz va kunlarni aniq va xavfsiz tarzda qo‘shishingiz mumkin.

Misol

// Create a Temporal object
const today = Temporal.Now.plainDateISO();

// Add a duration
const nextWeek = today.add({ days: 7 });
O‘zingiz sinab ko‘ring »

Sana bilan solishtiring

bilan JavaScript Date, sizda faqat bitta turdagi sana obyekti mavjud.

Date misoli

let d = new Date();
O‘zingiz sinab ko‘ring »

Alohida obyektlar

Temporal sizga kerak bo‘lgan narsaga qarab alohida obyektlarni beradi:

  • Instant — UTC’dagi aniq lahza

  • PlainDate — faqat sana

  • PlainDateTime - faqat sana va vaqt
  • ZonedDateTime - zona bilan sana va vaqt

Har bir obyektdan qachon foydalanish kerak

  • Instant - Vaqt belgilari va taqqoslash uchun
  • PlainDate — tug‘ilgan kunlar va kalendar sanalari uchun

  • PlainDateTime — mahalliy rejalashtirish vazifalari uchun

  • ZonedDateTime — vaqt zonalarini hisobga oluvchi ilovalar uchun



Temporal obyektlari o‘zgarmas

Vaqtinchalik obyektlar o‘zgarmasdir, ya’ni ularni yaratilgandan keyin o‘zgartirib bo‘lmaydi.

Vaqtinchalik obyektlar mavjudni o‘zgartirish o‘rniga yangi qiymatni qaytaradi.


Temporal sanalari DST uchun xavfsiz

DST uchun xavfsiz arifmetika yozgi vaqtga (DST) o‘tishlarda vaqt hisob-kitoblari (qo‘shish va ayirish) aniq qolishini ta’minlaydi va 1 soatlik xatolarning oldini oladi.

Bu mahalliy soat siljishlarini tushunadigan vaqt mintaqasi va kalendarga mos keladigan obyektlardan (ZonedDateTime) foydalanishni o‘z ichiga oladi.


Temporal sanalari RFC 5545 dan foydalanadi

RFC 5545 (Internet Calendaring and Scheduling Core Object Specification) — kalendar va rejalashtirish ma’lumotlarini almashish bo‘yicha soha standarti.

U turli tizimlarga (masalan, Google Calendar, Apple Calendar va Microsoft Outlook) bir-biri bilan muammosiz ishlash imkonini beradi.


JavaScript Date va Temporal

Xususiyat Sana Temporal
ISO 8601 Date/Time Ha Ha
RFC 3339 Date/Time Ha Ha
RFC 9557 Date/Time Yo‘q Ha
Time zone support Limited O‘rnatilgan
Immutable Yo‘q Ha
Faqat sana tipi Yo‘q Ha
Faqat vaqt tipi Yo‘q Ha
1-Based Months Yo‘q Ha
DST safe arithmetic Yo‘q Ha
ISO 8601 Duration Yo‘q Ha
RFC 9557 iCalendar Yo‘q Ha
Modern API design Yo‘q Ha
Precision Milliseconds Nanoseconds

JavaScript Temporal - bu o‘rnatilgan sana va vaqt obyektlari to‘plami bo‘lib, ulardan foydalanish JavaScript sanasiga qaraganda osonroq va xavfsizroqdir.

Temporal mahalliy vaqt o‘zgarishlari (masalan, DST o‘tishlari) bilan bog‘liq xatolarning oldini olish uchun sanalar va vaqtlar uchun alohida klasslardan foydalanadi.


Temporal’dan qachon foydalanish kerak?

Sana va vaqtni ishonchli boshqarish kerak bo‘lganda Temporaldan foydalaning.

  • Vaqt zonalarini to‘g‘ri qo‘llab-quvvatlash kerak bo‘lganda

  • Xavfsiz sana arifmetikasi (add / subtract, since / until) kerak bo‘lganda

  • DST xatolaridan qochish kerak bo‘lganda

  • Oldindan aytib bo‘ladigan va o‘qilishi oson kod kerak bo‘lganda

Temporal mavjud bo‘lmagan muhitlarni qo‘llab-quvvatlash uchun hali ham JavaScript Date dan foydalanishingiz kerak bo‘lishi mumkin.

Temporal obyektlari

2026-yil mart oyida yangilangan

obyektTavsif
Temporal.Duration Davomiylik uchun obyekt (kunlar, soatlar, daqiqalar)
Temporal.Instant UTC vaqtidagi aniq moment uchun obyekt
Temporal.PlainDateTime Faqat sana va vaqt uchun obyekt (vaqt zonasi yo‘q)
Temporal.PlainDate Faqat sana uchun obyekt (yil, oy, kun)
Temporal.PlainTime Faqat vaqt uchun obyekt
Temporal.PlainYearMonth Faqat yil va oy uchun obyekt
Temporal.PlainMonthDay Faqat oy va kun uchun obyekt
Temporal.ZonedDateTime Vaqt mintaqasi bilan sana va vaqt uchun obyekt
Temporal.Now Temporal metodlari uchun konteyner

W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!