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
| Xususiyat | Date | Temporal |
|---|---|---|
| Yaratilgan yili | 1995 | 2026 |
| O'zgaruvchanlik | Ha (Mutable) | Yo'q (O'zgarmas / Immutable) |
| Vaqt zonalari | Cheklangan | O'rnatilgan (Built-in) |
| DST xavfsizligi | Yo'q | Ha |
| Faqat sana turi | Yo'q | Ha (PlainDate) |
| Aniqlik | Millisekund | Nanosekund |
| Oylar sanog'i | 0 dan boshlanadi | 1 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)
let d = new Date(2026, 4, 1);
d.setDate(d.getDate() + 7); // Asl obyekt o'zgarib ketdiMisol (Temporal)
let d = Temporal.PlainDate.from("2026-05-01");
let keyingi = d.add({ days: 7 }); // 'd' o'zgarmaydi, 'keyingi' yangi obyektVaqt 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:
// 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:
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.
