Haftanın herhangi bir gününü Gregoryen Takvim içinde yalnızca birkaç basit işlemle hesaplamak mümkündür. Bu yöntemin temel mantığı, tarihin farklı bileşenlerini ayrı ayrı değerlendirip bunların haftalık döngü üzerindeki etkisini toplamaktır. Çünkü haftanın günleri yedi günde bir tekrar eder. (mod 7) Bu nedenle hesaplamalarda önemli olan toplam gün sayısı değil, bu toplamın 7'ye bölümünden kalan değerdir. Elde edilen kalan sayı, önceden belirlenmiş gün eşleştirmesine göre haftanın hangi gününe ulaşıldığını gösterir.
Hesaplama yapılırken önce tarihin gün değeri alınır. Ardından ilgili ay için önceden belirlenmiş ay kodu eklenir. Sonra yüzyıl kodu eklenir. Daha sonra artık yıl ve yılın son iki hanesi eklenir. Elde edilen toplam 7 ile bölünerek kalan bulunur. Kalan değeri başlangıç günü Pazar (0) kabul edilerek ilerleterek istenen gün bulunur.
Burada önce kavramları açıklamaya çalışalım ve ardından gün bulma örneği verelim.
Ay kodları rastgele seçilmiş sayılar değildir; her ay başlamadan önce yıl içinde geçmiş olan günlerin 7'ye göre kalanını temsil eder. Ay kodları takvimin referans noktasına göre (başlangıç gününe göre) ne kadar ileride olduğunu gösteren kod değerleri olup sihirli sayılar değildir; takvimin yapısından türetilmiş sayılardır. Mantığı şöyledir: Bir yılın başını (örneğin 1 Ocak'ı) referans alırsak, herhangi bir tarihe ulaşmak için geçen gün sayısını hesaplayabiliriz. Haftanın günü yalnızca 7'ye göre kalan ile ilgilidir. Bu yüzden ay kodları, her ayın başına kadar geçen günlerin 7'ye göre kalanıdır.
Örneğin artık yıl olmayan bir yılda ay kodları aşağıdaki gibi bulunur. Eğer yıl artık yıl ise yalnızca Ocak ve Şubat aylarının kodları değişir: Ocak: 6 Şubat: 2 Diğer ayların kodları aynı kalır.
Ay Öncesindeki toplam gün 7'ye bölümünden kalan Ay kodu
Ocak 0 gün geçti 7 ile bölümünden kalan 0 bu nedenle kod 0
Şubat 31 gün geçti 7 ile bölümünden Kalan 3 bu nedenle kod 3
Mart 59 gün geçti 7 ile bölümünden Kalan 3 bu nedenle kod 3
Nisan 90 gün geçti 7 ile bölümünden Kalan 6 bu nedenle kod 6
Mayıs 120 gün geçti 7 ile bölümünden Kalan 1 bu nedenle kod 1
Haziran 151 gün geçti 7 ile bölümünden Kalan 4 bu nedenle kod 4
Temmuz 181 gün geçti 7 ile bölümünden Kalan 6 bu nedenle kod 6
Ağustos 212 gün geçti 7 ile bölümünden Kalan 2 bu nedenle kod 2
Eylül 243 gün geçti 7 ile bölümünden Kalan 5 bu nedenle kod 5
Ekim 273 gün geçti 7 ile bölümünden Kalan 0 bu nedenle kod 0
Kasım 304 gün geçti 7 ile bölümünden Kalan 3 bu nedenle kod 3
Aralık 334 gün geçti 7 ile bölümünden Kalan 5 bu nedenle kod 5
Buna göre kısaca artık yıl olmayan bir yılda ay kodları şöyle olur:
Ocak → 0
Şubat → 3
Mart → 3
Nisan → 6
Mayıs → 1
Haziran → 4
Temmuz → 6
Ağustos → 2
Eylül → 5
Ekim → 0
Kasım → 3
Aralık → 5
Mesela Temmuz ayı için: Ocaktan Haziran sonuna kadar geçen gün sayısı: 31 + 28 + 31 + 30 + 31 + 30 = 181 gün geçti. Bu sayının 7 ile bölümünden (181'i 7'ye bölersen 181 = 7 × 25 + 6) kalan 6 olur. Bu yüzden Temmuzun kodu 6 olur. Yani ay kodu, o ay başlamadan önce geçen gün sayısının 7'ye göre kalanıdır.
Eğer takvim başlangıcı 1 Ocak yerine farklı bir başlangıç günü (farklı bir referans noktası), alınırsa, buradaki ay kodları tamamen değişir. Örneğin artık yıl olmayan bir yılda 1 Mart'ı referans alıp ay kodunu 0 kabul edelim. Her ayın kodu, 1 Mart'tan o ayın 1'ine kadar geçen gün sayısının 7'ye bölümünden kalana göre bulunur. Hesaplama şöyle olur. 1 Mart = 0, Nisan = 31 gün sonra → 3, Mayıs = 61 gün sonra → 5, Haziran = 92 gün sonra → 1 Temmuz = 122 gün sonra → 3 koduna sahip olur. Dolayısıyla 1 Mart'ın yıl başı olarak kabul edildiği bu referans sisteminde Temmuz ayının kodu 3 olurdu.
Netice olarak Ay kodları evrensel değildir; buradaki kodlar Ocak ayından başlayıp Aralık ayına kadar devam eden standart takvim aylarının algoritmasına göre üretilmiştir, farklı algoritmalarda bu kodlar değişebilir.
Ay kodu bulunduktan sonra yılın son iki rakamı eklenir ve bu iki basamaklı sayı 4'e bölünerek tam kısmı da ayrıca toplama katılır. Bu işlem, artık yılların takvime eklediği günün etkisini hesaba katar. Son olarak içinde bulunulan yüzyıla ait yüzyıl kodu eklenir. Yüzyıl kodları da Gregoryen takviminin 400 yıllık döngüsünden türetilmiştir ve her yüzyılda oluşan gün kaymasını dengelemek için kullanılır.
Yüzyıl kodları da ay kodları gibi 7'ye göre kalan hesabından elde edilir. Bunlar ezberlenmiş rastgele sayılar değildir. Mantık şu şekildedir: Bir yüzyıldan sonraki yüzyıla geçerken 100 yıl geçmiş olur. Normal bir yıl haftanın gününü 1 gün ileri taşır. Artık yıl ise 2 gün ileri taşır. Normal yıl (365 gün): 1 gün (365 ≡ 1 mod 7) Artık yıl (366 gün): 2 gün (366 ≡ 2 mod 7)
Geçen her 100 yılda (Gregoryen takviminde, 400'ün katı olmayan yüzyıllarda) 24 artık yıl vardır. (24*4+4=100) Her geçen 400 yılda ise bir artık yıl daha oluşur. Dolayısıyla 100 yılda toplam gün kayması: 76 normal yıl × 1 = 76 gün ; 24 artık yıl × 2 = 48 gün; Toplam = 124 gün olur.
Haftada 7 gün olduğundan: 124 sayısının 7 ile bölümünden kalan 5 olur. 124 mod 7 = 5 Yani her yeni yüzyıla geçtiğinde haftanın günü +5 gün ileri (veya mod 7 için eşdeğer olarak -2 gün geri) kayar. Bu yüzden yüzyıl kodları 2'şer azalarak (mod 7) ilerler. Yani her 400'ün katı olmayan yüzyılda başlangıç hafta günü 5 gün ileri kayar. (veya eşdeğer olarak 2 gün geri gelir.)
Örneğin:
1600 → 1700: +5
1700 → 1800: +5
1800 → 1900: +5
1900 → 2000: +6 burada ise durum farklıdır; Çünkü 2000 yılı 400'ün katı olduğu için artık yıldır ve bu 100 yıllık blokta 25 artık yıl bulunur. 400'ün katı olan yüzyılda ise: 75 normal yıl ve 25 artık yıl bulunur. Burada Toplam kayma: 75 × 1 + 25 × 2 = 75 + 50 = 125 gün olur. 125 sayısının 7 ile bölümünden kalan da 6 olur. 125 ≡ 6 (mod 7) Böylece dört yüzyıllık döngüde kaymalar: +5, +5, +5, +6 = 21 ≡ 0 (mod 7) şeklinde olur. Bu nedenle Gregoryen takvimi 400 yılda bir aynı hafta düzenine geri döner.
Örneğin yaygın kullanılan yüzyıl kodları:
::::::
Gregoryen takvimi 1582'den sonra kullanılmaya başlanmıştır. Örneğin 1500 yılı Gregoryen takviminde fiilen kullanılmamıştır. Bu nedenle 1500 = 0 gibi bir kod, tarihsel kullanım için değil, Gregoryen kurallarını geriye doğru uyguladığımız matematiksel hesaplamalarda anlamlıdır. Pratikte kullanılan yüzyıl kodları genellikle 1600, 1700, 1800, 1900, 2000, … için verilir. Bu nedenle Gregoryen takviminde yüzyıl kodları şöyle olur:
...........
1500 0
1600 6
1700 4
1800 2
1900 0
2000 6
2100 4
2200 2
2300 0
400 yılda ise durum yeniden başa döner:
400 yılda 97 artık yıl vardır. Toplam gün = 400
400*365+97=146097 gün
146097 mod 7 = 0
Bu nedenle Gregoryen takvim 400 yılda bir aynı hafta düzenini (6 4 2 0 ) tekrar eder. Yüzyıl kodlarının her dört yüzyılda bir aynı döngüye girmesinin nedeni budur. Böylece yüzyıllar için yüzyıl kodları da elde edilmiş olur.
Yukarıdaki açıklamalardan çıkarılan sonuca göre kısacası, hem ay kodları hem de yüzyıl kodları, takvimde biriken günlerin 7'ye göre kalanından türetilmiş pratik kısaltmalardır.
Normal bir yıl 365 gün sürer. 365 sayısı, 7'ye bölündüğünde 1 kalanını verir. Bu yüzden her normal yıl, aynı tarihin haftanın gününü 1 gün ileri taşır. Fakat yaklaşık her 4 yılda bir bir artık yıl vardır ve o yıl 366 gün sürer. 366 sayısı ise 7'ye bölündüğünde 2 kalanını verir. Yani artık yıllar normal yıllara göre haftanın gününü 1 gün daha fazla ileri taşır. Bu nedenle tarihteki yıl hanesi artık yılları bulmak için 4 ile bölünür.
Ay kodları, yüzyıl kodları, artık yıl kalanı gibi bütün bu değerler toplandıktan sonra sonuç 7'ye bölünür ve kalan bulunur. Çünkü haftanın günleri yedi günde bir tekrar ettiği için yalnızca bu kalan önemlidir. Kalanın hangi güne karşılık geldiği başlangıç günü için kullanılan tabloya göre belirlenir. Burada miladi takvim kullanıldığı için döngü Pazar (0) gününden başlar. Bu işlemler sonucunda uzun takvim hesapları yapmadan, yalnızca birkaç toplama ve bölme işlemiyle herhangi bir tarihin haftanın hangi gününe denk geldiği bulunabilir. Bu yöntem özellikle zihinden hesap yapmayı kolaylaştıran pratik ve sistematik bir tekniktir.
Örnek olarak 10 Ekim 1783 tarihi ele alalım.
Ekim ayının kodu 0, yılın son iki rakamı 83, bu 83 sayısının 4'e bölümünün tam kısmı 20 ve 1700'lü yılların yüzyıl kodu 4'tür. Hesaplama: [Gün + ay kodu + yıl son iki hane + artık yıl+yüzyıl kod] toplamı 7 ile bölünüp kalanı alınır. Kalan Pazar 0 kabul edilerek ileri doğru sayılır.
10 + 0 (ay kodu) + 83 + 20 + 4 (yüzyıl kodu) = 117.
117'nin 7'ye bölümünden kalan 5'tir ve bu sonuç Pazar 0, Pazartesi 1, Salı 2, Çarşamba 3, Perşembe 4, Cuma 5, Cumartesi 6 olduğundan 5 sayısından dolayı tarihin Cuma gününe denk geldiğini gösterir.
Başka bir örnek olarak 23 Mayıs 2037 tarihi alalım:
Mayıs ayının kodu 1, yılın son iki rakamı 37, 37'nin 4'e bölümünün tam kısmı 9 ve 2000'li yılların yüzyıl kodu 6'dır.
Hesaplama: 23 + 1 + 37 + 9 + 6 = 76. 76'nın 7'ye bölümünden kalan 6'dır ve bu sonuç tarihin Cumartesi gününe denk geldiğini gösterir.
Başka bir örnek daha alalım. 12 Nisan 1458 tarihi Gregoryen takviminden önceki bir tarihtir. Daha öncesinde Jülyen takvim kullanılmıştır.
Jülyen takvimi, her yıl 365 gün olan ve her dördüncü yılda ek bir artık gün içeren bir güneş takvimidir . Jülyen takvimi, Doğu Ortodoks Kilisesi'nin bazı kısımlarında ve Oryantal Ortodoksluğun bazı kısımlarında ve ayrıca Berberi takviminde hala dini bir takvim olarak kullanılmaktadır . Hızlı bir hesaplama için, 1901 ile 2099 yılları arasında çok daha yaygın olan Gregoryen tarihi, Jülyen tarihine 13 gün eklenerek elde edilir. 1582'de Papa XIII. Gregory'nin revize edilmiş bir takvim ilan etmesine kadar, 1600 yıldan fazla bir süre boyunca Roma İmparatorluğu'nda ve daha sonra Batı dünyasının çoğunda baskın takvim olarak Jülyen takvimi kullanılmıştır.
Tarih 12 Nisan 1458
Gün: 12
Nisan kodu: 6
Yılın son iki hanesi: 58
58 ÷ 4 = 14
1400 yüzyıl kodu: 2
Toplam: 12 + 6 + 58 + 14 + 2 = 92
92 ÷ 7 → kalan 1 olur. Bu da Pazartesi gününü verir.
Örneklerde kullanılan ay ve yüzyıl kodları Gregoryen takviminde yaygın kullanılan kodlara göre hesaplanmıştır ve verilen iki tarihin gerçek hafta günleriyle uyumludur.