Skip to content

JavaScript Temporal vs Date

Ushbu sahifada biz JavaScript-dagi eski Date obyekti va yangi Temporal API-sini solishtiramiz.


Date va Temporal o'rtasidagi asosiy farqlar

XususiyatDateTemporal
Yaratilgan yili19952026
O'zgaruvchanlikHa (Mutable)Yo'q (O'zgarmas / Immutable)
Vaqt zonalariCheklanganO'rnatilgan (Built-in)
DST xavfsizligiYo'qHa
Faqat sana turiYo'qHa (PlainDate)
AniqlikMillisekundNanosekund
Oylar sanog'i0 dan boshlanadi1 dan boshlanadi

O'zgaruvchanlik vs O'zgarmaslik (Mutation vs Immutability)

  • Date obyektlari o'zgaruvchan. Bu kutilmagan xatolarga sabab bo'lishi mumkin.
  • Temporal obyektlari o'zgarmas. Har qanday amal yangi obyekt qaytaradi.

Misol (Date)

js
let d = new Date(2026, 4, 1);
d.setDate(d.getDate() + 7); // Asl obyekt o'zgarib ketdi

Misol (Temporal)

js
let d = Temporal.PlainDate.from("2026-05-01");
let keyingi = d.add({ days: 7 }); // 'd' o'zgarmaydi, 'keyingi' yangi obyekt

Vaqt Zonalari bilan ishlash

Date obyekti mahalliy vaqt va UTC-ni chalkashtirib yuboradi. Masalan, toISOString() metodini chaqirganda vaqt zonangizga qarab sana siljib qolishi mumkin.

Temporal.PlainDate esa vaqt zonasi va vaqtdan mutlaqo mustaqil. U har doim belgilangan sanani ("2026-05-01") aniq saqlaydi.


Temporal 1-dan boshlanadi!

Eng katta qulayliklardan biri:

  • Date: Yanvar = 0.
  • Temporal: Yanvar = 1.

Bu insonlar uchun ancha tushunarli:

js
// May oyi, 1-kun (Date)
new Date(2026, 4, 1)

// May oyi, 1-kun (Temporal)
new Temporal.PlainDate(2026, 5, 1)

Sanalar Matematikasi (Date Math)

Date bilan kunlarni qo'shish uchun getDate() va setDate() metodlarini ishlatishga majburmiz. Temporal esa qulay matematik amallarni taklif qiladi:

js
let boshlanishi = Temporal.PlainDate.from("2026-02-17");
let natija = boshlanishi.add({ days: 30 }); // Judayam oson!

Xulosa

Date obyekti hali ham ishlaydi va juda oddiy vazifalar uchun yaraydi. Ammo murakkab tizimlar, vaqt zonalari va ishonchli kod uchun Temporal ancha ustunlikka ega.