Temporal ZonedDateTime

ULASHISH

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 »
Joriy vaqt ISO 8601 formatida qaytariladi.

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 »
Aniq moment bir xil bo‘lib qoladi, lekin mahalliy soat vaqti o‘zgaradi.

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)

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

TuriMeaning
InstantUTC vaqtidagi aniq lahza
PlainDateTimeOddiy sana va vaqt (vaqt zonasisiz)
ZonedDateTimeMahalliy sana va vaqt (+ vaqt zonasi)
Temporal Map

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

ConstructingTavsif
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

XususiyatTavsif
calendarIDCalendar system identifier ("iso8601")
dayKun butun son sifatida (1-31)
dayOfWeekButun son sifatida haftaning kuni (1 = dushanba)
dayOfYearYilning tartibli kuni
daysInMonthO‘sha oydagi kunlarning umumiy soni
daysInWeekO‘sha haftadagi kunlarning umumiy soni
daysInYearO‘sha yildagi kunlarning umumiy soni
epochMillisecondsUnix epoxasidan beri o‘tgan millisekundlar soni
epochNanosecondsUnix epoxasidan beri o‘tgan nanosekundlar soni
eraTaqvimning davr nomi, agar mavjud bo‘lsa ("gregori")
eraYearEra ichidagi yil (agar mavjud bo‘lsa)
hourSoat butun son sifatida (0-23)
hoursInDayUshbu vaqt zonasida ushbu kundagi soatlar soni (0-25)
inLeapYearSana kabisa yiliga to‘g‘ri kelishini ko‘rsatuvchi mantiqiy qiymat
microsecondMikrosekund butun son sifatida (0-999)
millisecondButun son sifatida millisekund (0-999)
minuteDaqiqa butun son sifatida (0-59)
monthOy butun son sifatida (1-12)
monthCodeOy uchun kalendarga xos, string ko‘rinishidagi kod ("M01")
monthsInYearO‘sha yildagi oylarning umumiy soni
nanosecondNanosoniya butun son (0-999)
offsetUshbu lahzani talqin qilishda ishlatiladigan siljish (+HH:mm:ss.sssssssss)
offsetNanosecondsUshbu lahzani nanosekundlarda izohlash uchun ofset ishlatilgan
secondIkkinchisi butun son (0-59)
timeZoneIdUshbu lahzani talqin qilishda ishlatiladigan vaqt zonasi identifikatori
weekOfYearYil ichidagi hafta raqami
YilYil butun son sifatida
yearOfWeekHafta 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!