Temporal ZonedDateTime
Vaqt zonalarini to‘g‘ri qayta ishlang
Temporal.ZonedDateTime obyekti vaqt mintaqasi bilan sana va vaqtni ifodalaydi.
Bu xalqaro sana va vaqt hisoblarini boshqarishning eng xavfsiz usuli.
Bu keng tarqalgan DST xatolarining oldini oladi va vaqt mintaqasini o‘zgartirishni aniq va bashoratli qiladi.
Siz nimani o‘rganasiz:
- JavaScript Temporal.ZonedDateTime-dan qanday foydalanish kerak
- Vaqt zonalari bilan qanday to‘g‘ri ishlash
- Sanani qanday qo‘shish va ayirish
- DST (yozgi vaqt) bilan bog‘liq xatolardan qanday qochish
- Vaqt zonalari o‘rtasida xavfsiz tarzda qanday o‘girish
Nega ZonedDateTime muhim
JavaScript Date’dan foydalanganda vaqt zonalari va yozgi vaqt (DST) jiddiy xatolarga sabab bo‘lishi mumkin.
ZonedDateTime buni har doim vaqt mintaqasini sana va vaqt bilan birga saqlash orqali hal qiladi.
Temporal.ZonedDateTime - bu vaqt mintaqasi va kalendardan xabardor sana/vaqt obyekti bo‘lib, u Yerdagi ma’lum bir mintaqa nuqtai nazaridan real vaqtdagi voqeani ifodalaydi.
Temporal.ZonedDateTime obyekti vaqt mintaqasi, DST-xavfsiz arifmetika va RFC 5545 taqvimi bilan o‘zaro ishlashni talab qiladigan holatlar uchun optimallashtirilgan.
Misol: 1995 yil 7 dekabr, AQSh Tinch okeani vaqti bilan soat 03:24 (Grigorian kalendarida).
ZonedDateTime yaratish
Misol
const zonedDate = Temporal.ZonedDateTime.from({
timeZone: 'Europe/Oslo',
year: 2026,
month: 5,
day: 17,
hour: 14,
minute: 30,
second: 0,
millisecond: 0,
microsecond: 0,
nanosecond: 500
});
O‘zingiz sinab ko‘ring »
Shuningdek, siz vaqt mintaqasini o‘z ichiga olgan stringdan ZonedDateTime yaratishingiz mumkin.
Misol
const zdt = Temporal.ZonedDateTime.from
("2026-02-17T14:30:00[Europe/Oslo]");
O‘zingiz sinab ko‘ring »
Vaqt zonasi nomi kvadrat qavslar ichida yoziladi.
Joriy sana va vaqtni vaqt zonasi bilan olish
Temporal.Now.zonedDateTimeISO() usuli tizimingizning joriy sanasini, vaqtini,
va vaqt mintaqasi Temporal.ZonedDateTime obyekti sifatida.
Misol
Joriy sana va vaqtni tizimingiz vaqt mintaqasidan oling:
const now = Temporal.Now.zonedDateTimeISO();
O‘zingiz sinab ko‘ring »
ISO 8601 formati
- 2026-03-02: kalendar sanasi (Yil-Oy-Kun).
- T10:36:00: kunduz vaqti (T-soat:daqiqa:sekund).
- +01:00: UTC (Muvofiqlashtirilgan universal vaqt) dan ofset.
- [Yevropa/Oslo]: IANA vaqt mintaqasi nomi, bu holda tizimning mahalliy vaqt mintaqasi.
Vaqt zonalari o‘rtasida konvertatsiya qilish
ZonedDateTime-ni boshqa vaqt mintaqasiga o‘zgartirishingiz mumkin.
Misol
const oslo = Temporal.ZonedDateTime.from
("2026-05-17T14:30:00+01:00[Europe/Oslo]");
const newYork = oslo.withTimeZone("America/New_York");
O‘zingiz sinab ko‘ring »
Vaqtni xavfsiz qo‘shish (DST uchun xavfsiz)
Yozgi vaqtni o‘zgartirish bo‘yicha kunlarni qo‘shish Javascript sanasini buzishi mumkin.
Temporal.ZonedDateTime buni to‘g‘ri boshqaradi.
Misol
const start = Temporal.ZonedDateTime.from
("2026-03-29T00:00:00+01:00[Europe/Oslo]");
const nextDay = start.add({ days: 1 });
O‘zingiz sinab ko‘ring »
Agar DST o‘zgarishi yuz bersa, Temporal avtomatik ravishda moslashadi.
ZonedDateTime since() metodi
since() metodi ikki Temporal sanasi orasidagi davomiylikni hisoblaydi.
Misol
const start = Temporal.ZonedDateTime.from(
"2026-02-17T09:00:00+01:00[Europe/Oslo]");
const end = Temporal.ZonedDateTime.from(
"2026-02-17T17:30:00+01:00[Europe/Oslo]");
const duration = end.since(start);
O‘zingiz sinab ko‘ring »
JavaScript since() va until()
Barcha vaqtinchalik sana obyektlari o‘zlarining since() usuliga ega:
- plaindate.since(plaindate)
- plaintime.since(plaintime)
- plainyearmonth.since(plainyearmonth)
- plainmonthday.since(plainmonthday)
- plaindatetime.since(plaindatetime)
- zoneddatetime.since(zoneddatetime)
- instant.since(instant)
Barcha vaqtinchalik obyektlar o‘zlarining qadar() usuliga ega:
- plaindate.until(plaindate)
- plaintime.until(plaintime)
- plainyearmonth.until(plainyearmonth)
- plainmonthday.until(plainmonthday)
- plaindatetime.until(plaindatetime)
- zoneddatetime.until(zoneddatetime)
- instant.until(instant)
LearnMore:
with() metodi
with() usuli belgilangan maydon(lar) almashtirilgan holda yangi zonali sana-vaqtni yaratadi.
Misol
// Create a ZonedDateTime
const date = Temporal.ZonedDateTimr.from("2026-05-17T14:30:00[Europe/Oslo]");
// Replace month and day
const customDate = date.with({ month:12, day:25 });
O‘zingiz sinab ko‘ring »
Instantdan aylantirish
Instant UTC’dagi lahzani ifodalaydi.
Siz uni ma’lum bir vaqt zonasida ZonedDateTime ga aylantirishingiz mumkin.
Misol
const instant = Temporal.Now.instant();
const zoned = instant.toZonedDateTimeISO("Europe/Oslo");
O‘zingiz sinab ko‘ring »
ZonedDateTime va PlainDateTime
| Turi | Meaning |
|---|---|
| Instant | UTC vaqtidagi aniq lahza |
| PlainDateTime | Oddiy sana va vaqt (vaqt zonasisiz) |
| ZonedDateTime | Mahalliy sana va vaqt (+ vaqt zonasi) |
ZonedDateTime’dan qachon foydalanish kerak
International applications.
Booking systems.
Parvoz yoki sayohat tizimlari.
DST’ni to‘g‘ri qayta ishlashi kerak bo‘lgan ilovalar.
Any system where time zones matter.
Temporal ZonedDateTime metodlari
| Constructing | Tavsif |
|---|---|
| new | ZonedDateTime obyektini yaratadi |
| from() | Obyekt yoki stringdan ZonedDateTime obyektini yaratadi |
| Converting | |
| getTimeZone Transition() |
Ushbu lahzadan keyingi yoki undan oldingi eng yaqin lahzani ifodalovchi ZonedDateTime obyektini qaytaradi |
| toInstant() | Ushbu sana-vaqtni ifodalovchi Instant obyektini qaytaradi |
| toPlainDate() | Ushbu sana-vaqtni ifodalovchi PlainDate obyektini qaytaradi |
| toPlainDateTime() | Ushbu sana-vaqtni ifodalovchi PlainDateTime obyektini qaytaradi |
| toPlainTime() | Ushbu sana-vaqtni ifodalovchi PlainTime obyektini qaytaradi |
| startOfDay() | Ushbu sananing birinchi lahzasini ifodalovchi ZonedDateTime ni qaytaradi |
| Updating | |
| with() | Ko‘rsatilgan maydonlari o‘zgartirilgan ZonedDateTime qaytaradi |
| withCalendar() | Boshqa kalendar tizimidagi ZonedDateTime qaytaradi |
| withPlainTime() | Yangi vaqt bilan almashtirilgan ZonedDateTime vaqt qismini qaytaradi |
| withTimeZone() | Yangi vaqt mintaqasida bu sanani ifodalovchi ZonedDateTime qaytaradi |
| Arithmetic | |
| add() | Davomiylik qo‘shilgan ZonedDateTime qaytaradi |
| subtract() | Davomiyligi ayirilgan holda ZonedDateTimeni qaytaradi |
| round() | Berilgan birlikkacha yaxlitlangan ZonedDateTime qaytaradi |
| Taqqoslash | |
| compare() | Ikki sanani solishtirganda -1, 0 yoki 1 qaytaradi |
| equals() | Ikki ZonedDateTime obyekti bir xil bo‘lsa, true qaytaradi |
| since() | Boshqa sanadagi farqni qaytaradi |
| until() | Farqni boshqa sanagacha qaytaradi |
| Formatlash | |
| toJSON() | JSON serializatsiyasi uchun ISO 8601 stringini qaytaradi |
| toLocaleString() | Sananing tilga sezgir tasvirini qaytaradi |
| toString() | ISO 8601 string ko‘rinishini qaytaradi |
| valueOf() | TypeError chiqaradi (Temporal obyektlarining primitivlarga aylantirilishining oldini oladi) |
Temporal ZonedDateTime xususiyatlari
| Xususiyat | Tavsif |
|---|---|
| calendarID | Calendar system identifier ("iso8601") |
| day | Kun butun son sifatida (1-31) |
| dayOfWeek | Butun son sifatida haftaning kuni (1 = dushanba) |
| dayOfYear | Yilning tartibli kuni |
| daysInMonth | O‘sha oydagi kunlarning umumiy soni |
| daysInWeek | O‘sha haftadagi kunlarning umumiy soni |
| daysInYear | O‘sha yildagi kunlarning umumiy soni |
| epochMilliseconds | Unix epoxasidan beri o‘tgan millisekundlar soni |
| epochNanoseconds | Unix epoxasidan beri o‘tgan nanosekundlar soni |
| era | Taqvimning davr nomi, agar mavjud bo‘lsa ("gregori") |
| eraYear | Era ichidagi yil (agar mavjud bo‘lsa) |
| hour | Soat butun son sifatida (0-23) |
| hoursInDay | Ushbu vaqt zonasida ushbu kundagi soatlar soni (0-25) |
| inLeapYear | Sana kabisa yiliga to‘g‘ri kelishini ko‘rsatuvchi mantiqiy qiymat |
| microsecond | Mikrosekund butun son sifatida (0-999) |
| millisecond | Butun son sifatida millisekund (0-999) |
| minute | Daqiqa butun son sifatida (0-59) |
| month | Oy butun son sifatida (1-12) |
| monthCode | Oy uchun kalendarga xos, string ko‘rinishidagi kod ("M01") |
| monthsInYear | O‘sha yildagi oylarning umumiy soni |
| nanosecond | Nanosoniya butun son (0-999) |
| offset | Ushbu lahzani talqin qilishda ishlatiladigan siljish (+HH:mm:ss.sssssssss) |
| offsetNanoseconds | Ushbu lahzani nanosekundlarda izohlash uchun ofset ishlatilgan |
| second | Ikkinchisi butun son (0-59) |
| timeZoneId | Ushbu lahzani talqin qilishda ishlatiladigan vaqt zonasi identifikatori |
| weekOfYear | Yil ichidagi hafta raqami |
| Yil | Yil butun son sifatida |
| yearOfWeek | Hafta tegishli yil |
Barcha xususiyatlarni ko‘rsatish
const zoned = Temporal.ZonedDateTime.from("2026-05-17T14:30:00[Europe/Oslo]");
O‘zingiz sinab ko‘ring »
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
