Ewiger Kalender
Wer hat sich nicht schon einmal gefragt, an welchem Wochentag er geboren wurde, an welchem Wochentag sein 50. Geburtstag sein wird oder auf welchen Tag im nächsten Jahr der Heilige Abend fällt.
Ausgangspunkt für unsere heutige(n) Datumsberechnung(en) ist der Gregorianische Kalender, der seit dem 15. Oktober 1582 verwendet wird.
Hintergrund ist der Umstand, dass man Mitte des 16. Jahrhunderts bemerkte, dass der zu diesem Zeitpunkt geltende Julianische Kalender, welcher im Jahre 45 v. Chr. von Julius Cäsar eingeführt wurde, mittlerweile 10 Tage von den astronomischen Gegebenheiten abwich.
Grund ist die Tatsache, dass beim Julianischen Kalender jedes vierte Jahr ein Schaltjahr ist, wodurch 1 Jahr durchschnittlich eine Länge von 365,25 Tagen hat.
Ein "richtiges" Jahr hat aber genau 365,2422 Tage. Das ergibt eine Verschiebung von 11 Minuten und 14 Sekunden, die sich bis ins 16. Jahrhundert auf rund 10 Tage aufsummiert hatte.
Aus diesem Grund gab Papst Gregor XIII. am 24. Februar 1582 in Form der Bulle "Inter gravissimas" die Reformation des Julianischen Kalenders bekannt, welche u.a. die folgenden Regeln für Schaltjahre enthält:
- Ist eine Jahreszahl durch 4, aber nicht durch 100 teilbar, so handelt es sich um ein Schaltjahr (2004, 2008, 2012, ... sind Schaltjahre).
- Ist eine Jahreszahl durch 4, durch 100 und durch 400 teilbar, so handelt es sich ebenfalls um ein Schaltjahr (1600, 2000, 2400, ... sind Schaltjahre).
- Ist eine Jahreszahl durch 4 und durch 100, aber nicht durch 400 teilbar, so handelt es sich um kein Schaltjahr (1800, 1900, 2100, 2200, ... sind keine Schaltjahre).
Ein Jahr hat nun nach dem Gregorianischen Kalender durchschnittlich 365,2425 Tage, was einer jährlichen Abweichung von einem "richtigen" Jahr um "nur" 26 Sekunden entspricht.
Um nun für ein (beliebiges) Datum des aktuell geltenden (Gregorianischen) Kalenders den richtigen Wochentag zu ermitteln, starten wir mit unseren Überlegungen beim 1. Jänner 1900. Dieser Tag war ein Montag, weshalb in diesem Beitrag den Wochentagen folgende Nummern zugeordnet werden:
Wochentag | Nummer |
---|---|
Montag | 1 |
Dienstag | 2 |
Mittwoch | 3 |
Donnerstag | 4 |
Freitag | 5 |
Samstag | 6 |
Sonntag | 0 |
Der Sonntag erhält nicht die zu erwartende Zahl 7, sondern die Zahl 0, da zum einen eine Woche 7 Tage hat und zum anderen bei einer Division durch 7 neben den Resten 1 bis 6 auch der Rest 0 auftreten kann.
Für die Wochentagsberechnung eines beliebigen Datums des (Gregorianischen) Kalenders werden insgesamt fünf Zahlen, die sich durch die folgenden Überlegungen ergeben, benötigt.
1. Zahl: Tageszahl
Die Tageszahl ist die jeweilige Zahl des Tages (17 beim 17. Jänner, 23 beim 23. Februar, ...)
2. Zahl: Monatszahl
Jedes Datum, das in den Jänner eines Jahres fällt, erhält die (Start–)Monatszahl 0.
Für ein Datum im Februar eines Jahres ergibt sich die Monatszahl 3 durch folgende Überlegung:
Ein Datum im Februar eines Jahres mit der Tageszahl x unterscheidet sich vom Datum im Jänner des gleichen Jahres mit der Tageszahl x um genau 3 Tage, da die (Wochentags–)Verschiebung genau 31 Tage (= 4 Wochen und 3 Tage) beträgt. Ist also der 1. Jänner eines Jahres (z.B. 1. Jänner 2024) ein Montag (1), so fällt der 1. Februar desselben Jahres (2024) auf einen Donnerstag (4, da 1 + 3 = 4 ≡ 4 (7)).
Für ein Datum im März eines (Nicht–Schalt–)Jahres ergibt sich eine (Wochentags–)Verschiebung von 3 Tagen (31 + 28 = 59 Tage = 8 Wochen und 3 Tage), für ein Datum im April eines (Nicht–Schalt–)Jahres eine (Wochentags–)Verschiebung von 6 Tagen (31 + 28 + 31 = 90 Tage = 6 Wochen und 6 Tage), für ein Datum im Mai eines (Nicht–Schalt–)Jahres eine (Wochentags–)Verschiebung von 1 Tag (31 + 28 + 31 + 30 = 120 Tage = 17 Wochen und 1 Tag) ...
Damit erhält man für alle Tage eines (Nicht–Schalt–)Jahres folgende Monatszahl–Tabelle:
Monat | Verschiebungszahl |
---|---|
Jänner | 0 (Start) |
Februar | 3 |
März | 3 |
April | 6 |
Mai | 1 |
Juni | 4 |
Juli | 6 |
August | 2 |
September | 5 |
Oktober | 0 |
November | 3 |
Dezember | 5 |
Dieser Tabelle entnimmt man z.B. die Eigenschaft, dass der 1. September und der 1. Dezember eines Jahres stets auf den gleichen Wochentag fallen.
Dies gilt jedoch nicht für das Duo "1. Jänner und 1. Oktober", da diese beiden Tage in einem Schaltjahr nicht den gleichen Wochentag besitzen.
An dieser Stelle noch ein Hinweis:
Auch im Falle eines Schaltjahres wird diese Monatszahl–Tabelle verwendet, die Berücksichtigung des Schalttages erfolgt beim Ermitteln der 5. Zahl.
3. Zahl: Zweistellige Jahreszahl
Jeder Tag eines Jahres verschiebt sich im folgenden Jahr "im allgemeinen" um 1 Wochentag, da die Tageszahl eines Jahres (365) bei Division durch 7 den Rest 1 liefert (365 = 52 ⋅ 7 + 1). Dies führt für Jahreszahlen mit den Endziffern 00, 01, 02 und 03 zu folgenden Werten:
Zweistellige Jahreszahl | Verschiebungszahl |
---|---|
00 | 0 (Start) |
01 | 1 |
02 | 2 |
03 | 3 |
Ein Jahr mit der Endzahl 04, 08, 12, ... ist stets ein Schaltjahr, damit wird – im Unterschied zu den anderen Jahreszahlen – die Verschiebungszahl des Vorjahres um 2 erhöht. Zusätzlich wird eine Verschiebungszahl ≥ 7 durch Ermitteln des Restes bei Division durch 7 auf den Wertebereich {0, 1, ..., 6} reduziert (die Verschiebungszahl 8 ist somit gleich der Verschiebungszahl 1, da eine Verschiebung um 8 Wochentage einer Verschiebung um 1 Wochentag entspricht bzw. die Zahl 8 bei Division durch 7 den Rest 1 liefert).
Dadurch gelangt man zu folgender Verschiebungstabelle:
Zweistellige Jahreszahl | Verschiebungszahl |
---|---|
00 | 0 (Start) |
01 | 1 |
02 | 2 |
03 | 3 |
04 | 5 (Schaltjahr) |
05 | 6 |
06 | 0 |
07 | 1 |
08 | 3 (Schaltjahr) |
09 | 4 |
10 | 5 |
Um nun eine Formel für diese Tabelle zu finden, werden einerseits die Eigenschaft, dass sich die Wochentage für einen bestimmten Tag eines Jahres "im allgemeinen" nach 7 Jahren wiederholen und andererseits die Eigenschaft, dass "im allgemeinen" alle 4 Jahre ein Schaltjahr ist, verwendet.
Die Addition der entsprechenden Funktionen Rest (Jahr/7) und Rest([Jahr/4]/7) liefern folgende Übersicht:
Jahreszahl | V-Zahl | Rest(Jahr/7) | Rest([Jahr/4]/7) | Addition |
---|---|---|---|---|
00 | 0 | 0 | 0 | 0 |
01 | 1 | 1 | 0 | 1 |
02 | 2 | 2 | 0 | 2 |
03 | 3 | 3 | 0 | 3 |
04 | 5 (+ 2) | 4 | 1 | 5 |
05 | 6 | 5 | 1 | 6 |
06 | 0 | 6 | 1 | 0 |
07 | 1 | 0 | 1 | 1 |
08 | 3 (+ 2) | 1 | 2 | 3 |
09 | 4 | 2 | 2 | 4 |
10 | 5 | 3 | 2 | 5 |
11 | 6 | 4 | 2 | 6 |
12 | 1 (+ 2) | 5 | 3 | 1 |
Somit wird für jedes Jahr (also auch für ein Schaltjahr) die Formel
Rest (Jahr/7) + Rest ([Jahr/4]/7) = Rest ((Jahr + [Jahr/4]))/7
für die zweistellige Jahreszahl verwendet.
Liegt dabei das Datum im Jänner oder Februar eines Schaltjahres, dessen Jahreszahl nicht durch 400 teilbar ist, so ist noch eine kleine Korrektur nötig.
Diese wird bei der 5. Zahl (Korrektur in einem Schaltjahr) durchgeführt.
4. Zahl: Jahrhundertzahl
Ausgangspunkt sind die beiden folgenden Tabellen:
Datum | Wochentag | Nr. | TZ | MZ | Nr. − MZ − TZ |
---|---|---|---|---|---|
1. Jänner 1900 | Montag | 1 | 1 | 0 | 0 |
1. Jänner 2000 | Samstag | 6 | 1 | 0 | 5 |
1. Jänner 2100 | Freitag | 5 | 1 | 0 | 4 |
1. Jänner 2200 | Mittwoch | 3 | 1 | 0 | 2 |
1. Jänner 2300 | Montag | 1 | 1 | 0 | 0 |
1. Jänner 2400 | Samstag | 6 | 1 | 0 | 5 |
1. Jänner 2500 | Freitag | 5 | 1 | 0 | 4 |
1. Jänner 2600 | Montag | 1 | 1 | 0 | 0 |
Datum | Wochentag | Nr. | TZ | MZ | Nr. − MZ − TZ |
---|---|---|---|---|---|
1. Oktober 1900 | Montag | 1 | 1 | 0 | 0 |
1. Oktober 2000 | Sonntag | 0 | 1 | 0 | 6 |
1. Oktober 2100 | Freitag | 5 | 1 | 0 | 4 |
1. Oktober 2200 | Mittwoch | 3 | 1 | 0 | 2 |
1. Oktober 2300 | Montag | 1 | 1 | 0 | 0 |
1. Oktober 2400 | Sonntag | 0 | 1 | 0 | 6 |
1. Oktober 2500 | Freitag | 5 | 1 | 0 | 4 |
1. Oktober 2600 | Montag | 1 | 1 | 0 | 0 |
Aufgrund der ersten Tabelle kann der 1. Jänner eines Jahrhunderts nur ein Montag, Mittwoch, Freitag oder Samstag, aber keinesfalls ein Dienstag, Donnerstag oder Sonntag sein.
Zusätzlich gilt: Eine Zeitspanne von 400 Jahren hat im Gregorianischen Kalender exakt 146 097 Tage. Diese Zahl ist durch 7 teilbar, sodass sich für einen bestimmten Tag der Wochentag alle 400 Jahre wiederholt.
Das Jahr 2014 besitzt daher − mit Ausnahme der "beweglichen" Feiertage (Ostern und mehr) − den gleichen Kalender wie die Jahre 1214, 1614, 2414, 2814, ...
Mit Hilfe der zweiten Tabelle (Daten für den 1. Oktober) ergibt sich folgende Überlegung:
JZ | Nr. − MZ − TZ | Rest(Jh./4) | 3 − Rest(Jh./4) | 2 ⋅ (3 − Rest(Jh./4)) |
---|---|---|---|---|
1900 | 0 | 3 | 0 | 0 |
2000 | 5 | 0 | 3 | 6 |
2100 | 4 | 1 | 2 | 4 |
2200 | 2 | 2 | 1 | 2 |
2300 | 0 | 3 | 0 | 0 |
2400 | 5 | 0 | 0 | 6 |
2500 | 4 | 1 | 2 | 4 |
2600 | 2 | 2 | 1 | 2 |
Aufgrund dieser Tabelle erhält man die Jahrhundertzahl mit Hilfe der Formel 2 ⋅ (3 − Rest(Jahrhundert/4)).
Ist dabei die Jahrhundertzahl durch 400 teilbar und liegt zusätzlich das Datum im Jänner oder Februar, so ist − analog zur 3. Zahl − eine kleine Korrektur (5. Zahl) nötig.
5. Zahl: Korrektur in einem Schaltjahr
Liegt das Datum im Jänner oder Februar eines Schaltjahres, so muss eine Wochentagsverschiebung von 1 Tag rückgängig gemacht werden, da
- im Falle einer durch 4 und durch 100, aber nicht durch 400 teilbaren Jahreszahl die zweistellige Jahresziffer (3. Zahl)
- im Falle einer durch 400 teilbaren Jahreszahl die Jahrhundertziffer (4. Zahl)
Mit Hilfe dieser fünf Zahlen kann daher folgender Algorithmus zur Bestimmung des Wochentages für ein Datum des Gregorianischen Kalenders angewendet werden:
Schritt | Beschreibung | Aktuelles Datum |
---|---|---|
1 | Eingabe der Tageszahl | 3 |
2 | Addition der entsprechenden Monatszahl (0 für Jänner, 3 für Februar, ...) | 5 (Dezember) |
3 | Bestimmen der Jahreszahl mit Hilfe der Formel Rest (Jahr + [Jahr/4])/7 | 24 + [24/4] = 24 + 6 = 30 30 ≡ 2 (7) |
4 | Ermitteln der Jahrhundertzahl mit Hilfe der Formel 2 ⋅ (3 − Rest(Jahrhundert/4)) | Rest(20/4)) = 0 2 ⋅ (3 − Rest(20/4)) = 6 |
5 | Anwenden einer Schaltjahreskorrektur (− 1 bei einem Datum im Jänner oder Februar eines Schaltjahres, ansonsten 0) | 0 |
Die Rechnung zur Ermittlung des Wochentages für das heutige Datum 3. Dezember 2024 lautet daher:
3 + 5 + 2 + 6 + 0 = 16 ≡ 2 (7)
Somit ist heute Dienstag.