Temporal’dagi xatolar
Temporal - bu kuchli API, lekin dastlab chalkash bo‘lishi mumkin.
- To‘g‘ri Temporal turidan foydalanishni unutmang
- Avoid implicit conversions
- Always handle time zones correctly
- < va > o‘rniga compare()’dan foydalaning
- Temporal obyektlari o‘zgarmas ekanligini yodda tuting
Bu yerda bir nechta keng tarqalgan xatolar va ulardan qanday qochish kerak.
Instant uchun UTC (Z) yetishmayapti
Instant har doim UTC’ni o‘z ichiga olishi shart.
Wrong
const instant = Temporal.Instant.from("2026-05-17T14:30:00");
O‘zingiz sinab ko‘ring »
To‘g‘ri
const instant = Temporal.Instant.from("2026-05-17T14:30:00Z");
O‘zingiz sinab ko‘ring »
PlainDateTime’ni vaqt zonasi bilan ishlatish
PlainDateTime vaqt zonalarini qo‘llab-quvvatlamaydi.
Wrong
const date = Temporal.PlainDateTime.from("2026-05-17T14:30:00Z");
O‘zingiz sinab ko‘ring »
To‘g‘ri
const date = Temporal.ZonedDateTime.from("2026-05-17T14:30:00");
O‘zingiz sinab ko‘ring »
Har xil turlarni solishtirish
Turli tiplarni solishtirishda Temporal obyektlari noto‘g‘ri natija berishi mumkin.
Wrong
const d1 = Temporal.PlainDate.from("2026-05-17");
const d2 = Temporal.Instant.from("2026-05-17T14:30Z");
Temporal.PlainDate.compare(d1, d2);
O‘zingiz sinab ko‘ring »
To‘g‘ri
const d1 = Temporal.PlainDate.from("2026-05-17");
const d2 = Temporal.PlainDateTime.from("2026-05-17T14:30");
Temporal.PlainDate.compare(d1, d2);
O‘zingiz sinab ko‘ring »
equals()’ni turli tiplar bilan ishlatish
Turli tiplarni solishtirishda Temporal obyektlari noto‘g‘ri natija berishi mumkin.
Wrong
const d1 = Temporal.PlainDate.from("2026-05-17");
const d2 = Temporal.Instant.from("2026-05-17T14:30Z");
d1.equals(d2);
O‘zingiz sinab ko‘ring »
To‘g‘ri
const d1 = Temporal.PlainDate.from("2026-05-17");
const d2 = Temporal.PlainDateTime.from("2026-05-17T14:30");
d1.equals(d2.toPlainDate());
O‘zingiz sinab ko‘ring »
Solishtirish uchun ==, < yoki > operatorlaridan foydalanish
Temporal obyektlarini ==, ===, < yoki > bilan solishtirib bo‘lmaydi.
Wrong
const d1 = Temporal.PlainDate.from("2026-05-17");
const d2 = Temporal.PlainDate.from("2026-05-17");
d1 === d2; // False
d1 == d2; // False
d1 < d2; // TypeError
d1 > d2; // TypeError
O‘zingiz sinab ko‘ring »
To‘g‘ri
const d1 = Temporal.PlainDate.from("2026-05-17");
const d2 = Temporal.PlainDate.from("2026-05-17");
Temporal.PlainDate.compare(d1, d2);
O‘zingiz sinab ko‘ring »
Mutatsiyani kutish
Vaqtinchalik obyektlar o‘zgarmasdir.
Wrong
const date = Temporal.PlainDate.from("2026-05-17");
date.add({ months: 1 });
O‘zingiz sinab ko‘ring »
To‘g‘ri
const date = Temporal.PlainDate.from("2026-05-17");
const next = d.add({ months: 1 });
O‘zingiz sinab ko‘ring »
valueOf()’dan foydalanish
Temporal obyektlari songa aylanmaydi.
Misol
const date = Temporal.PlainDate.from("2026-05-17");
try {
text = date.valueOf();
} catch (err) {
text = err.name;
}
O‘zingiz sinab ko‘ring »
Mahalliy vaqt uchun Instant’dan foydalanish
Instant har doim UTC (mahalliy vaqt emas).
Wrong
Temporal.Now.instant(); // not local time
O‘zingiz sinab ko‘ring »
To‘g‘ri
Mahalliy vaqtni olish uchun Temporal.Now.zonedDateTimeISO()’dan foydalaning:
Temporal.Now.zonedDateTimeISO();
O‘zingiz sinab ko‘ring »
Vaqt uchun PlainDate dan foydalanish
PlainDate’da vaqt yo‘q.
Wrong
Temporal.PlainDate.from("2026-05-17T14:30");
O‘zingiz sinab ko‘ring »
To‘g‘ri
Temporal.PlainDateTime.from("2026-05-17T14:30");
O‘zingiz sinab ko‘ring »
ZonedDateTime’da vaqt zonasini unutish
ZonedDateTime vaqt zonasini talab qiladi.
To‘g‘ri
Temporal.ZonedDateTime.from("2026-05-17T14:30:00+02:00[Europe/Oslo]");
O‘zingiz sinab ko‘ring »
To‘g‘ri tipni tanlamaslik
Har bir Temporal tipining o‘z maqsadi bor.
| Turi | Use |
|---|---|
| Instant | Exact moment (UTC) |
| PlainDate | Faqat sana |
| PlainTime | Faqat vaqt |
| PlainDateTime | Faqat sana + vaqt |
| ZonedDateTime | Date + time + time zone |
| Duration | Faqat vaqt davomiyligi |
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
