Günlük

Hicri Takvim Hesaplama (Hassas Çevirici) – Konu Anlatımı

Bu sayfada Hicri Takvim Hesaplama (Hassas Çevirici) hesabının mantığını, nasıl kullanıldığını ve dikkat edilmesi gerekenleri bulursun.

Sayfa
Konu anlatımı
Hızlı geçiş
Başlıkları aşağıdan takip et
İpucu
Sonuçlar bilgilendirme amaçlıdır

Hicri Takvim Çevirici — Çok Detaylı Konu Anlatımı (Miladi → Hicri)

Bu sayfa, Miladi (Gregoryen) bir tarihin nasıl olup da Hicri tarihe çevrilebildiğini öğrenci gibi adım adım anlatır. Hesaplayıcının yaptığı şey aslında şudur: Miladi tarihi ortak bir "sayım" sistemine çevirir, sonra oradan Hicri yıl/ay/günü bulur.


1) Hicri Takvim Nedir?

Hicri takvim, Ay'ın evrelerine göre düzenlenen kamerî (Ay) takvimidir. Miladi takvim ise Güneş'e göre ilerleyen şemsî (Güneş) takvimdir.

  • Miladi yıl ≈ 365.2422 gün (Güneş yılı)
  • Hicri yıl ≈ 354 veya 355 gün (Ay yılı)
  • Bu yüzden Hicri yıl, Miladi yıla göre her yıl yaklaşık 10–11 gün geri gelir.

Önemli: Hicri aylar "gözlemsel" (hilal görülmesine dayalı) olabildiği için, ülkeden ülkeye 1 gün fark çıkabilen durumlar vardır. Bu hesaplayıcı "astronomik/hesabi" yöntemi hedefler.


2) Neden Doğrudan Çeviremiyoruz? (En kritik fikir)

Miladi takvimde ayların gün sayıları 28–31 arasında değişir. Hicri takvimde ise aylar 29 veya 30 gün sürer. İki takvim "farklı mantıkla" ilerlediği için "2025-12-28 = şu Hicri gün" demek, aslında iki farklı sistem arasında "ortak bir köprü" kullanmak demektir.

İşte o köprü: Julian Day (Jülyen Gün Sayısı).


3) Julian Day (Jülyen Gün) Nedir?

Julian Day, tarihi "gün gün" sayıya çeviren bir sistemdir. Yani takvimlerin karmaşık ay/yıl yapısını bırakıp, "başlangıçtan beri kaç gün geçti?" sorusuna cevap verir.

  • Bir gün = +1 artar
  • Tarihler arası fark almak çok kolaylaşır
  • Miladi ↔ Hicri gibi dönüşümlerde ortak dil olur

Hesaplayıcı önce Miladi tarihten Julian Day üretir:

Miladi Tarih → Julian Day → Hicri Tarih


4) Bu Hesaplayıcı Hangi Adımlarla Çalışıyor?

4.1 Miladi tarihi parçalar

  • day: gün, month: ay, year: yıl

Sonra "1583 sonrası" kontrolü yapar. Çünkü Gregoryen takvim (Miladi'nin modern hali) dünyada 1582 civarında devreye girmiştir ve algoritmalar genelde bu döneme göre güvenlidir.

4.2 Julian Day hesaplar

  • Yılın günlerini toplar (365.25 yaklaşımı)
  • Ayların etkisini ekler (30.6001 yaklaşımı)
  • Gregoryen düzeltmesini uygular (yüzyıl düzeltmesi gibi)
  • Sonuç: julianDay

Detay: Buradaki ".5" gibi ifadeler, astronomide gün başlangıcının öğlen kabul edilmesi gibi teknik sebeplerle görülebilir.

4.3 Hicri başlangıç (epoch) ile fark alır

Hicri takvim için bir "başlangıç günü" sabiti vardır. Kodda bu:

iEpoch = 1948439.5

Bu değer, Hicri takvimin başlangıcına referans verir (Hicret başlangıcı için Julian Day). Sonra:

iDay = julianDay - iEpoch

Yani: "Hicri başlangıçtan bu Miladi tarihe kadar kaç gün geçti?"


5) Hicri Yıl Nasıl Bulunuyor? (30 yıllık döngü mantığı)

Hicri takvimde artık yıl sistemi vardır ve bu sistem genelde 30 yıllık döngü ile açıklanır. 30 yılda toplam gün sayısı yaklaşık olarak:

10631 gün

Bu yüzden kod:

  • cyc = iDay / 10631 ile kaç döngü geçtiğini bulur
  • rem ile döngü içindeki kalan günleri hesaplar

Ardından, kalan günleri "yaklaşık bir Hicri yıl uzunluğu" olan 354.36667 ile bölüp yılı bulur:

iYear ≈ rem / 354.36667

Bu kısım "hesabi" bir yaklaşımdır. Gerçek dünyada bazı kurumlar (Diyanet gibi) gözlem/astronomi tabloları da kullanır. Bu yüzden bazen 1 gün fark görülebilir.


6) Hicri Ay ve Gün Nasıl Çıkıyor?

6.1 Hicri aylar 29 veya 30 gün sürer

  • 30, 29, 30, 29, ... şeklinde dönüşümlü
  • Son ay (Zilhicce) bazı yıllarda 30 olabilir

6.2 Artık yıl kontrolü

Hicri takvimde bazı yıllar 355 gün olur. Bu durumda genelde 12. ay (Zilhicce) 30 çekebilir. Kod bunu şu mantıkla kontrol eder:

(iYear * 11 + 14) % 30 < 11 ise artık yıl

  • Eğer artık yıl ise: monthLengths[11] = 30 yapılır (Zilhicce 30 gün)

6.3 Kalan günleri ay ay düşerek ayı bulma

"rem" (kalan gün) yılın içindeki gün gibidir. Bu sayıdan ay uzunluklarını sırayla çıkarır:

  • rem ilk ayın gün sayısından küçükse: 1. aydayız
  • değilse: rem -= o ayın gün sayısı, sonraki aya geç

Böylece: hMonth (hangi ay) ve hDay (ayın kaçıncı günü) bulunur.

6.4 "hDay 0 çıktı" düzeltmesi neden var?

Bazı mod (kalan) hesaplarında "tam sınır" durumları olur. Örneğin tam ay geçişinde kalan gün 0 gibi görünebilir. Oysa takvimde "0. gün" diye bir şey yoktur.

  • hDay 0 ise bir önceki aya kaydırır
  • günü de bir önceki ayın son günü yapar

Bu tür düzeltmeler "takvim algoritmalarında" sık görülür: çünkü gün sayımı bazen 0-index, bazen 1-index mantığına kayabilir.


7) Hicri Ay İsimleri

  • 1 Muharrem
  • 2 Safer
  • 3 Rebiülevvel
  • 4 Rebiülahır
  • 5 Cemaziyelevvel
  • 6 Cemaziyelahır
  • 7 Recep
  • 8 Şaban
  • 9 Ramazan
  • 10 Şevval
  • 11 Zilkade
  • 12 Zilhicce

8) "Önemli Gün" Tespiti (Ramazan / Bayram / Hicri Yılbaşı)

  • Ramazan Ayı: hMonth = 9
  • Ramazan Bayramı başlangıcı: hMonth = 10 ve hDay = 1
  • Kurban Bayramı başlangıcı: hMonth = 12 ve hDay = 10
  • Hicri Yılbaşı: hMonth = 1 ve hDay = 1

Not: Gerçek takvimlerde bayram günleri "ülkelere/kurumlara" göre 1 gün farklı ilan edilebilir. Bu araç hesaplamayı "hesabi" mantıkla yapar ve bilgilendirme amaçlıdır.


9) Sonuç Tablosu Ne Anlatıyor?

Sonuçla birlikte gelen tablo; tarihi "bileşenlerine" ayırarak kontrol etmeni sağlar:

  • Gün: hDay
  • Ay: hicriAyAdi
  • Yıl: finalHYear
  • Miladi Referans: seçtiğin tarih

10) Neden Bazen 1 Gün Fark Olabiliyor?

  • Gözlemsel (hilal): Ay'ın görülmesine göre ay başlar
  • Hesabi (astronomik): Önceden hesapla/takvimle ay başlar

Diyanet, Umm al-Qura gibi kurumlar belirli astronomik kriterler kullanır. Bu kriterler değişince bazı günler 1 gün kayabilir.


11) Hesaplayıcıyı En Doğru Nasıl Kullanırsın?

  1. Miladi tarihi seç (örn: 2025-12-28)
  2. Hicri tarih sonucunu oku
  3. Özel gün etiketi varsa (Ramazan, Bayram vb.) kontrol et
  4. Resmî dini günler için, yerel kurum takvimini (Diyanet vb.) referans almayı unutma

Uyarı: Bu araç bilgilendirme amaçlıdır. Resmî ilanlar ve dini uygulamalar için ilgili kurumların yayımladığı takvim esas alınmalıdır.