Horst: Die Gregorianische Kalender-Reform richtig verstehen

Beitrag lesen

Hallo Mitstreiter,

in den letzten Tagen seit Ostern habe ich mich sehr intensiv mit Kalenderberechnungen befasst und bei Recherchen diese oder jene Formel zur Berechnung nach Julianischen Kalender und Gregorianischen Kalender gefunden.

Bisher dachte ich, dass unter Papst Gregor VIII einfach nur so auf den 4.10.1582 der 15.10.1582 folgte. Das ist formal schon richtig, aber schauen wir einmal genauer hin:

  • Der 4.10.1582 war ein Donnerstag (nach Julianischem Kalender).
  • Auf den Donnerstag folgt der Freitag.
  • Die Reform besagt, dass der auf den 4.10.1582 folgende Freitag das Datum 15.10.1582 bekommt (nunmehr Gregorianischer Kalender).

01.10.1582 Montag
02.10.1582 Dienstag
03.10.1582 Mittwoch
04.10.1582 Donnerstag
15.10.1582 Freitag
16.10.1582 Samstag
17.10.1582 Sonntag

Diese Erkenntnis führt zu wichtigen Schlussfolgerungen für Programmierer der Kalendertechnik im europäischen Raum:

  • 4.10.1582 hat den Julianischen Tag 2299160
  • 15.10.1582 hat den Julianischen Tag 2299161
  • der 1.1.-4713 war ein Montag (Julianischer Tag == 0)

Die Tage zwischen 4.10.1582 und 15.10.1582 sind ungültig.

Für Berechnungen:

  • Rechne Julianisch, wenn der Tag vor dem 4.10.1582 liegt oder mit diesem Tag gleich ist
  • Rechne Gregorianisch, wenn der Tag nach dem 4.10.1582 liegt.

Sofern Du diesen Regeln folgst, ist jeder Tag ab dem 1.1.-4713 (Julianischer Tag ist hier gleich 0) bis heute eindeutig adressierbar mit der Nummer des Julianischen Tages und dem Literal des Wochentages (Montag, Dienstag...).

Zurück zu Gregor VIII und seiner Reform: Bis 4.10. galt der Julianische Kalender und der 4.10. war ein Donnerstag!

Wer den Wochentag für den 4.10.1582 nach dem Gregorianischen Kalender ausrechnen sollte, kommt auf einen "Montag" und das ist falsch. Der Dreh- und Angelpunkt der Gregorianischen Kalenderreform ist der Wochentag, nicht das Datum.

Mit dem bisher Geasgtem kann der Wochentag (0 Sonntag, 1 Montag, usw.) wie folgt ganz einfach aus dem Julianischen Tag berechnet werden:

wochentag  = 1 + (juliantag modulo 7);
wenn wochentag ist 7, setze ihn zurück auf 0

Programmieren macht Spaß :-)

Viele Grüße,
Hotte