Temporal Duration

ULASHISH

Temporal.Duration obyekti

Temporal.Duration obyekti vaqt davomiyligini ifodalaydi.

Misol: 7 kun va 1 soat.

Temporal.Duration obyekti quyidagi xususiyatlarni o‘z ichiga oladi:

years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds va nanoseconds.

Misol

// Create a Duration object
const duration = Temporal.Duration.from({days:7, hours:2});

Natija

P7DT2H
O‘zingiz sinab ko‘ring »

ISO 8601 davomiylik kodlari

ISO 8601 davomiyligi vaqt uzunligini ifodalaydi.

U ±P (Period) dan boshlanadigan standart formatdan, undan keyin nYnMnDTnHnMnS tuzilmasidan foydalanadi.

Sintaksis

(o‘qish qulay bo‘lishi uchun bo‘sh joylar qo‘shilgan)

+P nY nM nW nD T nH nM nS

U yillar nY, oylar nM, haftalar nW, kunlar nD hamda soatlar nH, daqiqalar nM va soniyalar nS oldidan qo‘yiladigan T ni o‘z ichiga oladi.

Misol

Uch yil, olti oy, to‘rt kun, o‘n ikki soat, o‘ttiz daqiqa va besh soniya.

P3Y6M4DT12H30M5S

Qo‘shimcha misollar

DurationKod
1 kunP1D
45 daqiqaPT45M
1 yil, 2 oy, 3 kunP1Y2M3D
4 soat, 5 daqiqa, 6 soniyaPT4H5M6S
2.5 soatPT2H30M
5 haftaP5W

Batafsil bilib oling:

JavaScript Temporal standartlari


Temporal.Duration’ni qanday yaratish

Davomiylik bir necha xil usullarda yaratilishi mumkin:

NimadanKod
Konstruktor yordamidanew Temporal.Duration()
ObyektdanTemporal.Duration.from()
ISO stringidanTemporal.Duration.from()

new yordamida Duration yaratish

Temporal.Duration obyektini new konstruktori va butun son parametrlari yordamida yaratishingiz mumkin.

Misol

7 kun va 2 soatlik davomiylik yarating.

// Create a Duration object
const duration = new Temporal.Duration(0, 0, 0, 7, 2);
O‘zingiz sinab ko‘ring »

Parametrlar quyidagi tartibda bo‘lishi kerak:

  • Yillar
  • Oylar
  • Haftalar
  • Kunlar
  • Soatlar
  • Daqiqalar
  • Soniyalar
  • Millisekundlar
  • Mikrosekundlar
  • Nanosekundlar

Obyekt yordamida Duration yaratish

Davomiylik obyektini {days:7, hours: 2} kabi obyekt literal parametri bilan from() metodi yordamida yaratishingiz mumkin:

Misol

// Create a Duration object
const duration = Temporal.Duration.from({days:7, hours:2});
O‘zingiz sinab ko‘ring »

Obyekt literal JavaScript obyektlarini yaratishning eng keng tarqalgan usuli hisoblanadi.

Siz obyektni uning mazmunini jingalak qavslar { } ichiga olingan kalit: qiymat juftlari sifatida tom ma’noda yozish orqali yaratasiz.


ISO stringi yordamida Duration yaratish

Parametr sifatida ISO davomiyligi stringi bilan from() metodi yordamida Duration obyektini yaratishingiz mumkin.

Misol

// Create a Duration
const duration = Temporal.Duration.from("P7DT2H");
O‘zingiz sinab ko‘ring »

Batafsil bilib oling:

ISO davomiylik stringlari


Temporal.Duration xususiyatlari

Temporal.Duration obyekti vaqt ma’lumotlarining 12 xususiyatiga ega.

Misol

//Create a Duration
const duration = new Temporal.Duration(0, 0, 0, 7, 2, 0);

// List the Properties
let text =
"blank: " + duration.blank + " " +
"sign: " + duration.sign + " " +
"years: " + duration.years + " " +
"months: " + duration.months + " " +
"weeks: " + duration.weeks + " " +
"days: " + duration.days + " " +
"hour: " + duration.hours + " " +
"minutes: " + duration.minutes + " " +
"seconds: " + duration.seconds + " " +
"milliseconds: " + duration.milliseconds + " " +
"microseconds: " + duration.microseconds + " " +
"nanoseconds: " + duration.nanoseconds;
O‘zingiz sinab ko‘ring »

with() metodi

with() metodi muayyan xususiyatlari (vaqt birliklari) almashtirilgan yangi davomiylikni qaytaradi:

Misol

// Create a Duration
const duration = Temporal.Duration.from({hours:10, minutes:30});

// Create a new duration with the minutes changed to 45
const newDuration = duration.with({minutes:45});
O‘zingiz sinab ko‘ring »

Xavfsiz sana arifmetikasi

Duration obyekti sana va vaqt arifmetikasini xavfsiz va aniq bajarishni osonlashtiradi, DST (yozgi vaqt) va vaqt mintaqasi o‘zgarishlari bilan bog‘liq muammolarning oldini oladi.

Davomiylik obyekti vaqtni turli birliklarda, jumladan, yillar, oylar, haftalar, kunlar, soatlar, daqiqalar, soniyalar, millisekundlar, mikrosekundlar va nanosekundlarda boshqarishi mumkin.

Duration obyekti sana arifmetikasini millisekundlarni qo‘lda hisoblashga qaraganda aniqroq, o‘qilishi osonroq va xavfsizroq qiladi.


Duration add() metodi

add() metodi davomiylik qo‘shilgan yangi davomiylikni qaytaradi.

add() metodi asl davomiylikni o‘zgartirmaydi.

Misol

// Create a Duration
const d1 = Temporal.Duration.from({ hours:2, minutes:30 });

// Add a Duration
const d2 = d1.add({ hours:1, minutes:30 });
O‘zingiz sinab ko‘ring »

Duration subtract() metodi

subtract() metodi davomiylik ayirilgan yangi davomiylikni qaytaradi.

subtract() metodi asl davomiylikni o‘zgartirmaydi.

Misol

// Create a Duration
const d1 = Temporal.Duration.from({ hours:2, minutes:30 });

// Subtract a Duration
const d2 = d1.subtract({ hours:1, minutes:30 });
O‘zingiz sinab ko‘ring »

O‘zgarmaslik (immutability)

Temporal obyektlari o‘zgarmas, ya’ni add() yoki subtract() kabi amallar asl nusxani o‘zgartirmasdan yangi Temporal.Duration nusxasini qaytaradi.



Temporal add() va subtract()

Barcha Temporal obyektlari o‘zining add() metodiga ega:

  • duration.add(duration)
  • instant.add(duration)
  • plaindate.add(duration)
  • plaintime.add(duration)
  • plainyearmonth.add(duration)
  • plainmonthday.add(duration)
  • plaindatetime.add(duration)
  • zoneddatetime.add(duration)

Barcha Temporal obyektlari o‘zining subtract() metodiga ega:

  • duration.subtract(duration)
  • instant.subtract(duration)
  • plaindate.subtract(duration)
  • plaintime.subtract(duration)
  • plainyearmonth.subtract(duration)
  • plainmonthday.subtract(duration)
  • plaindatetime.subtract(duration)
  • zoneddatetime.subtract(duration)

Batafsil bilib oling:

Temporal arifmetikasi


Compare() metodi

Bir xil davomiylikning turli ko‘rinishlarini qayta ishlash murakkab bo‘lgani sababli Temporal.Duration obyektida equals() metodi mavjud emas.

Buning o‘rniga tenglik statik Temporal.Duration.compare() metodi yordamida tekshiriladi.

Bu usul birinchi muddat qisqaroq bo‘lsa -1 ni, bir xil bo‘lsa 0 ni va uzoqroq bo‘lsa 1 ni qaytaradi.

Misollar

// Create two Durations
const d1 = Temporal.Duration.from({ hours:1, minutes:30 });
const d2 = Temporal.Duration.from({ minutes:90 });

// Compare the Durations
let result = Temporal.Duration.compare(d1, d2);
O‘zingiz sinab ko‘ring »
// Create two Durations
const d1 = Temporal.Duration.from({ hours:1, minutes:30 });
const d2 = Temporal.Duration.from({ hours:1, minutes:30 });

// Compare the Durations
let result = Temporal.Duration.compare(d1, d2);
O‘zingiz sinab ko‘ring »

E’tibor bering, ikkala misol ham tenglik uchun 0 ni qaytaradi.

90 daqiqa 1 soat 30 daqiqa bilan bir xil davomiylikdir.

Barcha Temporal obyektlari o‘zining compare() metodiga ega:

  • Temporal.Instant.compare(instant1, instant2)
  • Temporal.PlainDate.compare(plaindate1, plaindate2)
  • Temporal.PlainTime.compare(plaintime1, plaintime2)
  • Temporal.PlainYearMonth.compare(plainyearmonth1, plainyearmonth2)
  • Temporal.PlainMonthDay.compare(plainmonthday1 plainmonthday2)
  • Temporal.PlainDateTime.compare(plaindatetime1,plaindatetime2)
  • Temporal.ZonedDateTime.compare(zoneddtatime1, zoneddtatime2)
  • Temporal.Duration.compare(duration1, duration2)

Batafsil bilib oling:

Temporal qiymatlarini taqqoslash


Diapazon xatolari

Misol

// Create two Durations
const d1 = Temporal.Duration.from({ days:30 });
const d2 = Temporal.Duration.from({ months: 1 });

// Compare the Durations
let result = Temporal.Duration.compare(d1, d2);

Yuqoridagi kod ishlamaydi va RangeError xatosini chiqaradi, chunki d2 notekis va o‘zgaruvchan uzunlikka ega kalendar birligini (oylarni) o‘z ichiga oladi.

Taqvimdagi aniq boshlanish nuqtasi bo‘lmasa, JavaScript bajarilish muhiti (runtime) taqqoslash uchun "1 oy"da qancha kun borligini aniqlay olmaydi.

Misol uchun, fevral oyidan boshlanadigan 1 oy 28 yoki 29 kun bo‘lishi mumkin, yanvar oyida boshlangan 1 oy esa 31 kun.


equals() metodi yo‘q

Temporal.Duration obyekti equals() metodiga ega emas, chunki davomiylik matematik jihatdan ekvivalent, lekin tuzilishi jihatidan farq qiluvchi bir nechta “muvozanatsiz” usullarda ifodalanishi mumkin.

Masalan, 90 soniya davomiylik mantiqiy jihatdan 1 daqiqa 30 soniyaga teng, lekin ular Temporal.Duration obyektida alohida xossalar to‘plami sifatida saqlanadi.

Muvozanatlanmagan birliklar: Standart holatda Temporal.Duration birliklarni qanday aniqlangan bo‘lsa, aynan shunday saqlaydi. "60 daqiqa" va "1 soat" turli xil ichki tasvirlar bo‘lganligi sababli, standart equals() usuli noaniq bo‘ladi (bir xil xususiyatlar yoki bir xil vaqt uzunligini tekshirish kerakmi?)

O‘zgaruvchan birlik uzunliklari: kunlar, oylar va yillar kabi birliklar qat’iy uzunlikka ega emas. "Oy" taqvim va ma’lumot sanasiga qarab 28, 30 yoki 31 kun bo‘lishi mumkin.

Kontekst zarurati: Kalendar birliklarini (yillar, oylar, haftalar) o‘z ichiga olgan ikkita davomiylikni to‘g‘ri solishtirish uchun siz relativeTo opsiyasini (aniq boshlanish nuqtasini) berishingiz kerak. Bu tayanch nuqtasiz API ikkita kalendarga asoslangan muddat haqiqatda "teng" ekanligini aniqlay olmaydi.

Oddiy equals() metodi o‘rniga TC39 Temporal taklifi ishlab chiquvchilardan Temporal.Duration.compare() statik metodidan foydalanishni talab qiladi.


Duration’dan qachon foydalaniladi

  • Vaqt qo‘shish yoki ayirish

  • Yoshni hisoblash

  • Sanalar orasidagi farqlarni hisoblash

  • Vaqt oraliqlarini hisoblash (soatlar, kunlar, oylar)


Temporal.Duration metodlari

YaratishTavsif
from() Obyekt yoki ISO stringidan yangi Duration obyektini qaytaradi
new() Butun sonli parametrlardan yangi davomiylik obyektini qaytaradi
Arifmetika
abs()Ushbu muddatning mutlaq qiymati bilan yangi muddatni qaytaradi
add()Bu muddatga qo‘shilgan davomiylik bilan yangi muddatni qaytaradi
negated()Bu davomiylikning ishorasi teskarisiga o‘zgartirilgan yangi davomiylikni qaytaradi
round()Bu muddat yaxlitlangan holda yangi muddatni qaytaradi
subtract()Bu muddatdan ayirib tashlangan muddat bilan yangi muddatni qaytaradi
Taqqoslash
compare() Ikki davomiylikni solishtiradi (-1, 0 yoki 1 qaytaradi)
Konvertatsiya
with()Ko‘rsatilgan maydon(lar)i o‘zgartirilgan yangi davomiylikni qaytaradi
Formatlash
total()Berilgan birlikdagi davomiylikni ifodalovchi sonni qaytaradi
toJSON()JSON serializatsiyasi uchun RFC 9557 formatidagi stringni qaytaradi
toLocaleString()Vaqtning tilga sezgir tasvirini qaytaradi
toString()RFC 9557 formatidagi string ko‘rinishini qaytaradi
valueOf()TypeError chiqaradi (Temporal obyektlarining primitivlarga aylantirilishining oldini oladi)

Temporal.Duration xususiyatlari

XususiyatTavsif
blankAgar davomiylik nolga teng bo‘lsa, mantiqiy true
daysKunlar butun son sifatida (1-31)
hoursSoatlar butun son sifatida (0-23)
microsecondsMikrosekundlar butun son sifatida (0-999)
millisecondsMillisekundlar butun son sifatida (0-999)
minutesDaqiqalar butun son sifatida (0-59)
monthsOylar butun son sifatida (1-12)
nanosecondsNanosekundlar butun son sifatida (0-999)
secondsSoniyalar butun son sifatida (0-59)
sign1 musbat, -1 manfiy
weeksHaftalar butun son sifatida
yearsYillar butun son sifatida

Barcha Duration xususiyatlarini ko‘rsatish

//Create a Duration
const duration = new Temporal.Duration(0, 0, 0, 7, 2, 0);

// List the Properties
let text =
"blank: " + duration.blank + " " +
"sign: " + duration.sign + " " +
"years: " + duration.years + " " +
"months: " + duration.months + " " +
"weeks: " + duration.weeks + " " +
"days: " + duration.days + " " +
"hour: " + duration.hours + " " +
"minutes: " + duration.minutes + " " +
"seconds: " + duration.seconds + " " +
"milliseconds: " + duration.milliseconds + " " +
"microseconds: " + duration.microseconds + " " +
"nanoseconds: " + duration.nanoseconds;
O‘zingiz sinab ko‘ring »

W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!