Temporal arifmetikasi

ULASHISH

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 »
Qo‘shish ham, ayirish ham o‘zgarmasdir: ikkalasi ham yangi Vaqtinchalik obyektni qaytaradi.

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 »
Ko‘p odamlar 28-fevralni kutishadi, ammo Sana jimgina sanani 1-martga o‘tkazadi.

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 »
Temporal bilan siz to‘lib-toshgan harakatni aniq tanlashingiz mumkin.

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!