Saf Gregoryen takvim aritmetiği

Tarihe ekle. Taşmayı görünür kıl.

Tek bir Gregoryen tarihe yıl, ay, hafta ve gün ekleyin veya çıkarın. Saat dilimi, iş günü ve iki tarih arasındaki fark bu aracın kapsamında değildir.

  • Kesin YYYY-MM-DD
  • Yıl → Ay → Hafta → Gün
  • sinirla veya reddet
  • Offline ve deterministik

İşlemi tanımlayın

Çıkarmak için negatif tam sayı kullanın.

Girdi
Kesin biçim: YYYY-MM-DD. Örnek: 2024-01-31.
İşaretli güvenli tam sayı; boş alan 0 kabul edilir.
Ay sonu taşma politikası

İşlem sırası sabittir Yıl → Ay → Hafta → Gün. Yıl ve ay ayrı ayrı denetlenir; hafta ve gün son aşamada hafta × 7 + gün olarak birleşir.

Sonuç ve işlem izi

Her aşama, kullanılan politika ile birlikte gösterilir.

Çıktı

Hesap bekleniyor Girdileri ayarlayın ve Hesapla düğmesine basın.

Alıntılanabilir cevap

Ay sonu kendiliğinden sonraki aya taşmaz

Bir tarihe ay eklerken hedef ayda aynı gün yoksa sonuç kendiliğinden ertesi aya taşmamalı; araç seçilen politikaya göre ayın son gününe sınırlar veya hata döndürür.

31 Ocak + 1 ay

  1. Başlangıç tarihi 2024-01-31.

  2. Hedef ay Şubat 2024 ve bu ay 29 gün.

  3. Kaynak gün 31, hedef ayda bulunmuyor.

  4. sinirla2024-02-29 ve ayinSonunaSinirlandi: true; reddetGECERSIZ_HEDEF_GUN.

TC39 PlainDate.add taşma davranışı, constrain ve reject ayrımına ücretsiz bir dayanak sunar.

Formül dayanağı

Ay aşaması, negatif değerlerde de güvenli kalan sıfır tabanlı bir ay indeksi kullanır:

hedefToplamAy = mevcutYıl × 12 + (mevcutAy − 1) + ekAy
hedefAy0 = ((hedefToplamAy % 12) + 12) % 12
hedefYıl = (hedefToplamAy − hedefAy0) / 12
toplamTakvimGünü = ekHafta × 7 + ekGün

Gregoryen kuralı: yıl 400'e bölünürse artık; 100'e bölünürse değil; aksi hâlde 4'e bölünürse artıktır. Şubat böylece 28 veya 29 gün sürer.

TC39 BalanceISOYearMonth ayları 12 katsayısıyla dengeler; CalendarDateAdd hafta için 7 katsayısını gösterir; PlainDate.inLeapYear artık yıl kuralını verir.

Neden ara adımlar var?

Bu aracın kanonik ürün sözleşmesi yıl ve ayı ayrı uygular. 2024-02-29 + 1 yıl + 1 ay, önce 2025-02-28, sonra 2025-03-28 olur.

Bu sıra, tek bir Temporal.PlainDate.add({ years: 1, months: 1 }) çağrısıyla aynı değildir: TC39 algoritması yıl ve ayı birlikte dengeler. Burada ardışık uygulama bilinçli ve görünür bir araç kuralıdır.

Sık hatalar

  • Her ayı 30 gün sanmak.
  • Yerleşik setMonth taşmasını fark etmemek.
  • 29 Şubat ve 100/400 yıl istisnalarını atlamak.
  • Yıl–ay işlem sırasını gizlemek.
  • Takvim tarihi ile sabit süreyi karıştırmak.
  • Sonucu iş günü hesabı sanmak.

TakvimAritmetik nasıl kullanılır?

  1. Tarihi girin

    Tarihi kesin YYYY-MM-DD biçiminde girin.

  2. Bileşenleri girin

    Eklenecek veya çıkarılacak yıl, ay, hafta ve gün değerlerini tam sayı olarak girin.

  3. Politikayı seçin

    Hedef ayda aynı gün yoksa sinirla veya reddet politikasını seçin.

  4. Sonucu inceleyin

    Hesapla düğmesine basın; kanonik tarihi, ara adımları ve JSON çıktısını inceleyin.

Sık sorulan sorular

Hedef ayda aynı gün yoksa ne olur?

Bir tarihe ay eklerken hedef ayda aynı gün yoksa sonuç kendiliğinden ertesi aya taşmamalı; araç seçilen politikaya göre ayın son gününe sınırlar veya hata döndürür.

İşlem sırası nedir?

İşlem sırası sabittir: önce yıl, sonra ay, ardından hafta ve gün uygulanır. Yıl ve ay aşamalarının her biri kendi taşma kontrolünü yapar.

29 Şubat nasıl ele alınır?

Hedef yılda 29 Şubat yoksa sinirla 28 Şubat'ı kullanır; reddet GECERSIZ_HEDEF_GUN hatası döndürür.

İş günü veya iki tarih arasındaki fark hesaplanır mı?

Hayır. Bu araç tek bir tarihe takvim bileşenleri ekler veya çıkarır; iş günü saymaz ve iki tarih arasını ölçmez.

Kaynaklar ve kapsam

Kapsam ayrımı: Bu araç iki tarih arasını ölçmez ve iş günü saymaz. Bunlar sırasıyla mevcut TarihArasi ve IsGunu araçlarının kapsamıdır.