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:
  1. Ist eine Jahreszahl durch 4, aber nicht durch 100 teilbar, so handelt es sich um ein Schaltjahr (2004, 2008, 2012, ... sind Schaltjahre).
  2. Ist eine Jahreszahl durch 4, durch 100 und durch 400 teilbar, so handelt es sich ebenfalls um ein Schaltjahr (1600, 2000, 2400, ... sind Schaltjahre).
  3. 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).
Zusätzlich folgte als Ausgleich der 10 Tages–Differenz auf Donnerstag, den 4. Oktober 1582 (Julianischer Kalender) unmittelbar Freitag, der 15. Oktober 1582 (Gregorianischer Kalender) als Beginn der neuen Kalenderrechnung.
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
  1. im Falle einer durch 4 und durch 100, aber nicht durch 400 teilbaren Jahreszahl die zweistellige Jahresziffer (3. Zahl)
  2. im Falle einer durch 400 teilbaren Jahreszahl die Jahrhundertziffer (4. Zahl)
auf alle Tage des Schaltjahres angewendet wird.

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 19
2 Addition der entsprechenden Monatszahl (0 für Jänner, 3 für Februar, ...) 3 (März)
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 19. März 2024 lautet daher:

19 + 3 + 2 + 6 + 0 = 30 ≡ 2 (7)

Somit ist heute Dienstag.