Temporal qiymatlarini taqqoslash
Sanalarni taqqoslash
JavaScript’da <, >, == yoki === kabi operatorlar yordamida obyektlarni solishtirib bo‘lmaydi.
Standart tenglik operatorlari o‘rniga har doim equals() yoki compare() metodlaridan foydalaning.
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)
compare() metodi
compare() metodi quyidagilarni qaytaradi:
- -1, agar birinchi sana oldinroq bo‘lsa
- 1, agar birinchi sana keyinroq bo‘lsa
- 0, agar ular teng bo‘lsa:
Misol
// Create two Temporal objects
const date1 = Temporal.PlainDate.from("2026-05-17");
const date2 = Temporal.PlainDate.from("2024-12-25");
// Compare the dates
result = Temporal.PlainDate.compare(date1, date2);
O‘zingiz sinab ko‘ring »
Nega < va > ishlamaydi
Temporal obyektlari primitiv sonlar emas, balki obyektlardir.
(a < b) deb yozganingizda, JavaScript ikkala obyektni ham primitivlarga aylantirishga harakat qiladi.
Temporal obyektlari uchun bu Date’dagi kabi sonli vaqt belgisini (timestamp) hosil qilmaydi.
Misol
// Create two Temporal objects
const a = Temporal.PlainDate.from("2026-02-17");
const b = Temporal.PlainDate.from("2026-03-01");
// Compare the dates
console.log(a < b); // ❌ Error
Temporal.Duration.compare()
Bir xil davomiylikning turli ko‘rinishlarini qayta ishlash murakkab bo‘lgani sababli Temporal.Duration obyektida equals() metodi mavjud emas.
Temporal.Duration.compare() method.
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, yuqoridagi ikkita misol tenglik uchun 0 ni qaytaradi.
90 daqiqa 1 soat 30 daqiqa bilan bir xil davomiylikdir.
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.
Buni tuzatish uchun Temporal.Duration.compare() ga uchinchi argument sifatida relativeTo opsiyasini uzatishingiz kerak. Bu aniq uzunliklarni hisoblash uchun aniq sana kontekstini beradi.
Misol
const d1 = Temporal.Duration.from({ days: 30 });
const d2 = Temporal.Duration.from({ months: 1 });
// Provide a start date (e.g., January 1st, 2026)
const startPoint = Temporal.PlainDate.from("2026-01-01");
// Compare the Durations using the reference date
let result = Temporal.Duration.compare(d1, d2, { relativeTo: startPoint });
// Returns -1 (January has 31 days. 30 days is SHORTER than 1 month.)
relativeTo tayanch nuqtasini o‘zgartirish orqali bajarilish konteksti turli taqqoslash natijalarini beradi:
1-fevraldan boshlanganda: d1 (30 kun) d2 (1 oy / 28 kun)’dan uzunroq, shuning uchun 1 qaytariladi.
1-apreldan boshlanganda: d1 (30 kun) d2 (1 oy / 30 kun)’ga aynan teng, shuning uchun 0 qaytariladi.
1-yanvardan boshlanganda: d1 (30 kun) d2 (1 oy / 31 kun)’dan qisqaroq, shuning uchun -1 qaytariladi.
Temporal.Instant.compare()
Misol
// Create Temporal.Instant objects
const i1 = Temporal.Instant.from("2026-05-17T12:00:00Z");
const i2 = Temporal.Instant.from("2026-05-17T12:00:00Z");
const i3 = Temporal.Instant.from("2026-05-17T13:00:00Z");
// compare()
let x1 = Temporal.Instant.compare(i1, i2));
let x2 = Temporal.Instant.compare(i1, i3));
let x3 = Temporal.Instant.compare(i3, i1));
O‘zingiz sinab ko‘ring »
Temporal.PlainDate.compare()
Misol
// Create two Temporal objects
const date1 = Temporal.PlainDate.from("2026-05-17");
const date2 = Temporal.PlainDate.from("2024-12-25");
// Compare the dates
result = Temporal.PlainDate.compare(date1, date2);
O‘zingiz sinab ko‘ring »
Temporal’da saralash
compare() metodi to‘g‘ridan-to‘g‘ri JavaScript Array.sort() metodiga uzatish uchun mo‘ljallangan:
Misol
// Create an Array of dates
const dates = [
Temporal.PlainDate.from("2026-05-17"),
Temporal.PlainDate.from("2022-01-01"),
Temporal.PlainDate.from("2024-12-25")
];
// Sort chronologically
dates.sort(Temporal.PlainDate.compare);
O‘zingiz sinab ko‘ring »
Sanalarni taqqoslash
Har doim standart tenglik operatorlaridan ko‘ra, compare() yoki equals() metodlaridan foydalaning.
Temporal equals() metodi
Ko‘pgina (*) Temporal obyektlari o‘zining equals() metodiga ega:
- instant.equals(instant)
- plaindate.equals(plaindate)
- plaintime.equals(plaintime)
- plainyearmonth.equals(plainyearmonth)
- plainmonthday.equals(plainmonthday)
- plaindateTime.equals(plaindatetime)
- zoneddateTime.equals(zoneddtatime)
(*) Duration’da yo‘q.
equals() metodi ikkala sana teng bo‘lsa, true qaytaradi.
Temporal.Instant equals() metodi
Misol
// Create Temporal.Instant objects
const i1 = Temporal.Instant.from("2026-05-17T12:00:00Z");
const i2 = Temporal.Instant.from("2026-05-17T12:00:00Z");
const i3 = Temporal.Instant.from("2026-05-17T13:00:00Z");
// equals()
let x1 = i1.equals(i2); // true
let x2 = i1.equals(i3); // false
O‘zingiz sinab ko‘ring »
Temporal.PlainDate equals() metodi
Misol
// Create two Temporal objects
const date1 = Temporal.PlainDate.from('2026-05-17');
const date2 = Temporal.PlainDate.from('2026-05-17');
let result = date1.equals(date2);
O‘zingiz sinab ko‘ring »
Temporal.PlainDateTime equals() metodi
PlaneDateTime qiymatlarini equals() metodi yordamida solishtirishingiz mumkin.
Misol
const d1 = Temporal.PlainDateTime.from("2026-05-17T14:30:00");
const d2 = Temporal.PlainDateTime.from("2026-05-17T14:30:00");
let result = d1.equals(d2)
O‘zingiz sinab ko‘ring »
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
