Temporal arifmetikasi
Sanalarni xavfsiz qo‘shish va ayirish
JavaScript Temporal sana va vaqtni oson va ishonchli hisoblash usullariga ega.
Asl qiymatni o‘zgartirmasdan kunlar, oylar, yillar va vaqtlarni qo‘shing va ayiring.
Perform date arithmetic without DST (Daylight Saving Time) or Time Zone problems.
Temporal add() va subtract()
Barcha vaqtinchalik obyektlar o‘zlarining add() usuliga 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 vaqtinchalik obyektlar o‘zlarining subtract() usuliga 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)
JavaScript Temporal’da qo‘shish
add() metodi kirish qiymati sifatida davomiylik obyektini qabul qiladi.
Misol: { days: 10 }.
Davomiylik bo‘yicha oldinga siljigan yangi vaqtinchalik sana obyektini qaytaradi.
Sintaksis
temporal.add(duration)
Misol
// Create a Temporal object
const myDate = Temporal.PlainDate.from("2026-05-17");
// Add a duration
const newDate = myDate.add({ days: 10 });
O‘zingiz sinab ko‘ring »
JavaScript Temporal’da ayirish
subtract() metodi kirish qiymati sifatida davomiylik obyektini qabul qiladi.
Misol: { days: 10 }.
Davomiylik bo‘yicha orqaga surilgan yangi vaqtinchalik sana obyektini qaytaradi.
Sintaksis
temporal.subtract(duration)
Misol
// Create a Temporal object
const myDate = Temporal.PlainDate.from("2026-05-17");
// Subtract a duration
const newDate = myDate.subtract({ days: 10 });
O‘zingiz sinab ko‘ring »
Sana chegaralari
Both add and subtract handle date boundaries:
31-martga bir kun qo‘shilsa, 1-aprel bo‘ladi.
Oylarni qo‘shish
Temporal automatically handles different month lengths.
Misol
// Create a Temporal object
const date = Temporal.PlainDate.from("2026-05-17");
const result = date.add({ months: 1 });
O‘zingiz sinab ko‘ring »
Agar keyingi oyda kamroq kunlar bo‘lsa, Vaqtinchalik avtomatik ravishda sozlanadi.
Yillarni qo‘shish
Yillarni qo‘shish hatto kabisa yillari uchun ham to‘g‘ri ishlaydi.
Misol
// Create a Temporal object
const date = Temporal.PlainDate.from("2024-02-29");
const result = date.add({ years: 1 });
O‘zingiz sinab ko‘ring »
Temporal handles leap year adjustments automatically.
Qo‘llab-quvvatlanadigan davomiylik birliklari
add() va subtract() metodlari kirish qiymati sifatida davomiylik obyektini qabul qiladi.
Misol: { months: 2, days: 7, hours: 1 }.
Quyidagi davomiylik birliklari qo‘llab-quvvatlanadi:
- years
- months
- weeks
- days
- hours
- minutes
- seconds
- milliseconds
- microseconds
- nanoseconds
Bir nechta birlikni qo‘shish
Misol
// Create any Temporal object
const myDate = Temporal.PlainDate.from('2026-05-17');
// Add multiple units
const newDate = myDate.add({ years: 1, months: 2, days: 15 });
O‘zingiz sinab ko‘ring »
PlainDateTime add() va subtract()
Vaqtni xavfsiz qo‘shishingiz yoki ayirishingiz mumkin.
Asl qiymati o‘zgarmaydi.
Misol
// Create a PlainDateTime object
const date = Temporal.PlainDateTime.from("2026-05-17T14:30:00");
// Add and subtract time
const earlier = dateTime.subtract({ minutes: 30 });
const later = dateTime.add({ hours: 2 });
O‘zingiz sinab ko‘ring »
PlainDate add() va subtract()
Misol
// Create a PlainDate object
const date = Temporal.PlainDate.from("2026-05-17");
// Add and subtract time
const earlier = date.subtract({ months: 3 });
const later = date.add({ days: 10 });
O‘zingiz sinab ko‘ring »
Instant add() va subtract()
Temporal.Instant’ga faqat vaqt davomiyliklarini (soat, daqiqa, soniya) qo‘shish yoki ayirish mumkin, oylar yoki yillar kabi kalendar davomiyliklarini esa yo‘q, chunki ularning uzunligi vaqt zonasi va kalendarga qarab farq qilishi mumkin.
Misol
// Create a Temporal.Instant object
const now = Temporal.Instant.fromEpochMilliseconds(Date.now());
// Subtract 5 hours and 30 minutes
const fiveHalfHoursAgo = now.subtract({ hours: 5, minutes: 30 });
O‘zingiz sinab ko‘ring »
Joriy vaqtga davomiylik qo‘shish
Misol
// Create a Temporal object
const today = Temporal.Now.plainDateISO();
// Add a duration
const nextWeek = today.add({ days: 7 });
O‘zingiz sinab ko‘ring »
Immutable
Eski Date obyektidan farqli o‘laroq, Temporal obyektlari o‘zgarmas.
Barcha metodlar mavjud nusxani o‘zgartirmasdan yangi nusxa qaytaradi.
ZonedDateTime bilan sana arifmetikasi
ZonedDateTime handles daylight saving time (DST) safely.
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 (yozgi vaqt) o‘zgarishi yuz bersa, Temporal avtomatik ravishda moslashadi.
Sana arifmetikasi bilan solishtiring
JavaScript Date obyekti kabisa yili qoidalarini to‘g‘ri amalga oshiradi, ammo kabisa yillarini o‘z ichiga olgan kalendar hisoblari hayratlanarli natijalarga olib kelishi mumkin, chunki noto‘g‘ri sanalar xato sifatida xabar berish o‘rniga avtomatik ravishda sozlanadi.
Kabisa kuniga bir yil qo‘shish
// Create a Date object
let d = new Date("2024-02-29");
// Add one year
d.setFullYear(d.getFullYear() + 1);
O‘zingiz sinab ko‘ring »
365 kunni qo‘shish bir xil emas
// Create a Date object
let d = new Date("2024-02-29");
// Add one year
d.setDate(d.getDate() + 365);
O‘zingiz sinab ko‘ring »
Endi natija 28-fevral bo‘ladi, bu setFullYear() natijasidan farq qiladi.
Bu shuni ko‘rsatadiki, Sana taqvim va kun arifmetikasini hayratlanarli tarzda aralashtirib yuboradi.
Noto‘g‘ri sanalar jimgina tuzatiladi
// Create a Date object
let d = new Date(2025, 1, 29);
O‘zingiz sinab ko‘ring »
Yaroqsiz sana haqida xabar berish o‘rniga, JavaScript uni jimgina boshqa haqiqiy sanaga o‘zgartiradi.
Temporal’da toshib ketish (overflow)
Vaqtinchalik sana bekor bo‘lganda nima bo‘lishini tanlash imkonini beradi.
Masalan: 2024 yil 29 fevral + 1 yil o‘z kuchini yo‘qotadi, chunki 2025 yilda 29 fevral yo‘q.
To‘ldirish opsiyasi sanani hisoblash noto‘g‘ri sanani keltirib chiqarganda nima sodir bo‘lishini boshqaradi.
bilan overflow: "constrain" , Vaqtinchalik natijani eng yaqin amal sanasiga o‘zgartiradi.
bilan overflow: "reject" , Vaqtinchalik sanani o‘zgartirish o‘rniga xato qiladi.
overflow’ning standart qiymati
// Create a PlainDate object
const d = Temporal.PlainDate.from("2024-02-29");
// Add one year
const nextYear = d.add({ years: 1 });
O‘zingiz sinab ko‘ring »
overflow: "constrain"
// Create a PlainDate object
const d = Temporal.PlainDate.from("2024-02-29");
// Add one year
const nextYear = d.add(
{ years: 1 },
{ overflow: "constrain" }
);
O‘zingiz sinab ko‘ring »
overflow: "reject"
// Create a PlainDate object
const d = Temporal.PlainDate.from("2024-02-29");
// Add one year
try {
const nextYear = d.add(
{ years: 1 },
{ overflow: "reject" }
);
text = nextYear.toString();
} catch (err) {
text = err.name;
}
O‘zingiz sinab ko‘ring »
Eng yaxshi amaliyotlar
Faqat sana arifmetikasi uchun PlainDate’dan foydalaning.
- Vaqt mintaqasi bo‘yicha hisob-kitoblar uchun ZonedDateTime-dan foydalaning.
Avoid manual millisecond calculations.
Temporal’ni afzal ko‘ring, chunki u o‘zgarmas.
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
