Advanced Java Services | Gregorianischer und Julianischer Kalender |
Da sich einige Übungsaufgaben mit Kalenderproblemen beschäftigen, finden Sie hier ein wenig Information über den gregorianischen Kalender und seinen Vorgänger, den julianischen Kalender.
Im Jahre 1582 wurde durch Papst Gregor XIII der gregorianische Kalender eingeführt. In den Ländern, die den Übergang als erste vollzogen, folgte auf Donnerstag, den 4.Oktober sofort der Freitag, 15.Oktober. Die dazwischen liegende Kalendertage wurden übersprungen. Der einzige Unterschied zum vorher geltenden Julianischen Kalender war eine neue Schaltjahresbedingung. Die seit JDK1.1 existierende Klasse GregorianCalendar bildet diesen Vorgang exakt ab. Die Klasse GregorianCalender hat eine Methode um den Beginn des gregorianischen Kalenders zu verschieben. Da der vom Papst verordnete Termin nicht überall akzeptiert wurde, kann man so verschiedene Übergänge modellieren. So wurde der neue Kalender zum verordneten Termin nur in Spanien, Portugal und dem größten Teil Italiens eingeführt. Die übrigen katholischen Länder Europas folgten 1583 und 1584. Erst 1700 führten die protestantischen Länder den gregorianischen Kalender ein, berechneten aber das protestantische Osterfest nach der alten Regel. 1776 schließlich wurde der gregorianische Kalender vollständig übernommen.
Vor dem gregorianischen Kalender galt der julianische Kalender, den Julius Cäsar 45 v.Chr. einführte. Eine Kalenderreform war dringend notwendig geworden, da mittlerweile der Januar etwa 80 Tage zu früh begann und damit in den Herbst fiel. Julius Cäsar beauftragte deshalb den alexandrinischen Astronomen Sosigenes mit der Ausarbeitung eines neuen Kalenders. Nach dem Vorbild des ägyptischen Kalenders wurde der julianische Kalender ein reiner Sonnenkalender. Sosigenes schlug Cäsar eine Schaltjahresregel vor. Auf Anordnung Cäsars wurde dann das Jahr 46 v.Chr. auf 445 Tage verlängert, um die Monate wieder mit den Jahreszeiten abzustimmen und 45 v.Chr. war dann das erste Schaltjahr. Mit diesem Kalender wurde zum ersten Mal eine periodische Schaltjahresregel eingeführt. Jedes vierte Schaltjahr sollte ein Schaltjahr sein. Das war für die damalige Zeit eine äußerst genaue Regel. Es dauerte etwa 1600 Jahre bis sich der Fehler des julianischen Kalenders auf die 11 Tage aufaddierte, die dann bei der Einführung des gregorianischen Kalenders übersprungen wurden. Als Cäsar 44 v.Chr. starb wurde zwar ihm zu Ehren der römische Monat "quintilis" in "iulius" umbenannt, daher unser Monatsname Juli, doch die Schaltjahresregel wurde falsch angewandt und jedes dritte Jahr zum Schaltjahr erklärt. Kaiser Augustus erkannte und korrigierte diesen Fehler, in dem er ab dem Jahre 8 v.Chr. für 12 Jahre keine Schaltjahre mehr zuließ. Zu Ehren von Augustus wurde nun der sechste Monat des römischen Kalenders, der "sextilis" in "augustus" umbenannt, daher unser Monatsname August. Damit ergeben sich ab dem Jahre 45 v.Chr. folgende Jahre als Schaltjahre :
-45 | -42 | -39 | -36 | -33 | -30 | -27 | -24 | -21 | -18 | -15 | -12 | -9 |
Nun tritt die durch Augustus verordnete Schaltjahrpause ein. Die folgende Jahre sind keine Schaltjahre:
-8 | -7 | -6 | -5 | -4 | -3 | -2 | -1 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
Das Jahr 0 hat es nie gegeben, auf 1 v.Chr. folgte sofort 1 n.Chr. Beginnend mit dem Jahre 8 gilt die einfache Schaltregel, daß jedes durch 4 teilbare Jahr ein Schaltjahr ist. Diese Regel gilt bis 1582.
Ein Jahr ist Schaltjahr, wenn die Jahreszahl entweder durch 4 teilbar ist und nicht durch 100
oder durch 400 teilbar ist.
Beispiele: 2000 war ein Schaltjahr, 1900 war kein Schaltjahr, 1996 war ein Schaltjahr,
2002 war kein Schaltjahr
Java spoken : boolean leapyear = (year%4==0 && year%100!=0) || year%400==0 ;
Ein Jahr ist Schaltjahr, wenn die Jahreszahl durch 4 teilbar ist.
Das Datum sei in tag , monat , jahr abgelegt.
Es werden zwei Hilfsgrößen h und k wie folgt berechnet :
Ist monat <= 2, | so ist | h = monat + 12 | und | k = jahr - 1. |
Ist monat > 2, | so ist | h = monat | und | k = jahr. |
Der Wochentag ergibt sich nun durch :
wochentag = [ tag + 2*h + (3*h + 3) div 5 + k + k div 4 - k div 100 + k div 400 +1] mod 7
Dadurch erhält die Variable wochentag einen Wert zwischen 0 und 6 .
(div = Ganzzahldivision, mod = modulo = Divisionsrest)
Dabei bedeutet 0 = Sonntag , 1 = Montag , usw.
Die Gaußsche Formel läßt sich sehr leicht an den julianischen Kalender
anpassen. Die folgende Formel liefert die richtigen Wochentage im Zeitraum vom Sa, 01.01.0001 - Do, 4.10.1582 :
wochentag = [ tag + 2*h + (3*h + 3) div 5 + k + k div 4 -1 ] mod 7
Dadurch erhält die Variable wochentag einen Wert zwischen 0 und 6 .
(div = Ganzzahldivision, mod = modulo = Divisionsrest)
Dabei bedeutet 0 = Sonntag , 1 = Montag , usw.
Seit dem Altertum richtet sich das Osterfest nach dem Frühlingsanfang. Dieser wiederum wird von den Astronomen (nicht Astrologen...) berechnet. In der katholischen Welt ist der Ostersonntag der erste Sonntag nach dem ersten Vollmond nach Frühlingsanfang. Mit Ausnahme des ersten Advents richten sich alle beweglichen katholischen Festtage nach dem Ostersonntag.
Faschingssonntag
Der 7.Sonntag vor dem Ostersonntag
Aschermittwoch
Der Mittwoch nach dem Faschingssonntag
Ostersonntag
Der erste Sonntag nach dem ersten Vollmond nach Frühlingsanfang
Christi Himmelfahrt
39 Tage nach dem Ostersonntag (ist immer ein Donnerstag)
Pfingstsonntag
Der 7.Sonntag nach dem Ostersonntag
Dreifaltigkeitstag
Der 1.Sonntag nach dem Pfingstsonntag
Fronleichnam
11 Tage nach dem Pfingssonntag (ist immer ein Donnerstag)
1. Advent
Der 4. Sonntag vor dem 25. Dezember
Gültig im Bereich des gregorianischen Kalenders
Das Jahr sei in der Variablen jahr abgelegt.
Das Osterdatum ergibt sich dann folgendermaßen :
Das Datum wird aus den Werten der beiden Größen d und e ermittelt. Um
allerdings diese zu erhalten braucht man eine eine Reihe von Hilfsgrößen, die wir
a, b, c, p, q, r, x und y nennen. Beachten Sie, wie die Hilfsgrößen
voneinander abhängen.
p = jahr div 100 | ||
q = p div 3 | r = p div 4 | |
x = (15+p-q-r) mod 30 | y = (4+p-r) mod 7 | |
a = jahr mod 19 | b = jahr mod 4 | c = jahr mod 7 |
d = (19*a+x) mod 30 | ||
e = (2*b+4*c+6*d+y) mod 7 |
Jetzt kann man d und e auswerten
d==28 und e==6 , so gilt : Ostern ist am 18.April
d==29 und e==6 , so gilt : Ostern ist am 19.April
ansonsten gilt
ist 22+d+e < 32 , so folgt : Ostern ist am (22+d+e). März
ist 22+d+e >=32 , so folgt : Ostern ist am (d+e-9). April
Gültig im Bereich des gregorianischen Kalenders
Das Jahr sei in der Variablen jahr abgelegt.
Das Pfingstdatum ergibt sich dann folgendermaßen :
Das Datum wird aus den Werten der beiden Größen d und e ermittelt. Um
diese zu erhalten braucht man eine eine Reihe von Hilfsgrößen, die wir
a, b, c, p, q, r, x und y nennen. Beachten Sie, wie die Hilfsgrößen
voneinander abhängen.
p = jahr div 100 | ||
q = p div 3 | r = p div 4 | |
x = (15+p-q-r) mod 30 | y = (4+p-r) mod 7 | |
a = jahr mod 19 | b = jahr mod 4 | c = jahr mod 7 |
d = (19*a+x) mod 30 | ||
e = (2*b+4*c+6*d+y) mod 7 |
Jetzt kann man d und e auswerten
d==28 und e==6 , so gilt : Pfingsten ist am 06.Juni
d==29 und e==6 , so gilt : Pfingsten ist am 07.Juni
ansonsten gilt
ist d+e<22, so ist Pfingsten am (10+d+e).Mai
ist d+e>=22, so ist Pfingsten am (d+e-21).Juni
Gültig im Bereich des gregorianischen Kalenders
Das Jahr sei in der Variablen jahr abgelegt.
Der Faschingssonntag ergibt sich dann folgendermaßen :
Das Datum wird aus den Werten der beiden Größen d und e ermittelt. Um
diese zu erhalten braucht man eine eine Reihe von Hilfsgrößen, die wir
a, b, c, p, q, r, x und y nennen. Beachten Sie, wie die Hilfsgrößen
voneinander abhängen.
p = jahr div 100 | ||
q = p div 3 | r = p div 4 | |
x = (15+p-q-r) mod 30 | y = (4+p-r) mod 7 | |
a = jahr mod 19 | b = jahr mod 4 | c = jahr mod 7 |
d = (19*a+x) mod 30 | ||
e = (2*b+4*c+6*d+y) mod 7 |
Jetzt kann man d und e auswerten
d==28 und e==6 , so gilt :
Faschingssonntag ist am 28.02 (jahr ist kein Schaltjahr)
Faschingssonntag ist am 29.02 (jahr ist Schaltjahr)
d==29 und e==6 , so gilt :
Faschingssonntag ist am 01.03 (immer)
ansonsten gilt
ist d+e<28, so gilt
Faschingssonntag ist am (1+d+e).02 (jahr ist kein Schaltjahr)
Faschingssonntag ist am (2+d+e).02 (jahr ist Schaltjahr)
ist d+e>=28, so gilt
Faschingssonntag ist am (d+e-27).03 (immer)
Und wenn wir schon dabei sind, wollen wir auch gleich noch den Aschermittwoch erledigen:
Gültig im Bereich des gregorianischen Kalenders
Das Jahr sei in der Variablen jahr abgelegt.
Der Faschingssonntag ergibt sich dann folgendermaßen :
Das Datum wird aus den Werten der beiden Größen d und e ermittelt. Um
diese zu erhalten braucht man eine eine Reihe von Hilfsgrößen, die wir
a, b, c, p, q, r, x und y nennen. Beachten Sie, wie die Hilfsgrößen
voneinander abhängen.
p = jahr div 100 | ||
q = p div 3 | r = p div 4 | |
x = (15+p-q-r) mod 30 | y = (4+p-r) mod 7 | |
a = jahr mod 19 | b = jahr mod 4 | c = jahr mod 7 |
d = (19*a+x) mod 30 | ||
e = (2*b+4*c+6*d+y) mod 7 |
Jetzt kann man d und e auswerten
d==28 und e==6 , so gilt :
Aschermittwoch ist am 03.03 (immer)
d==29 und e==6 , so gilt :
Aschermittwoch ist am 04.03 (immer)
ansonsten gilt
ist d+e<25, so gilt
Aschermittwoch ist am (4+d+e).02 (jahr ist kein Schaltjahr)
Aschermittwoch ist am (5+d+e).02 (jahr ist Schaltjahr)
ist d+e>=25, so gilt
Aschermittwoch ist am (d+e-24).03 (immer)
Christi Himmelfahrt ? auch kein Problem
Gültig im Bereich des gregorianischen Kalenders
Das Jahr sei in der Variablen jahr abgelegt.
Christi Himmelfahrt ergibt sich dann folgendermaßen :
Das Datum wird aus den Werten der beiden Größen d und e ermittelt. Um
diese zu erhalten braucht man eine eine Reihe von Hilfsgrößen, die wir
a, b, c, p, q, r, x und y nennen. Beachten Sie, wie die Hilfsgrößen
voneinander abhängen.
p = jahr div 100 | ||
q = p div 3 | r = p div 4 | |
x = (15+p-q-r) mod 30 | y = (4+p-r) mod 7 | |
a = jahr mod 19 | b = jahr mod 4 | c = jahr mod 7 |
d = (19*a+x) mod 30 | ||
e = (2*b+4*c+6*d+y) mod 7 |
Jetzt kann man d und e auswerten
d==28 und e==6 , so gilt :
Christi Himmelfahrt ist am 27.05
d==29 und e==6 , so gilt :
Christi Himmelfahrt ist am 28.05
ansonsten gilt
ist d+e=0 , so gilt
Christi Himmelfahrt ist am 30.04
ist 0<d+e<32 , so gilt
Christi Himmelfahrt ist am (d+e).05
ist d+e>=32, so gilt
Christi Himmelfahrt ist am (d+e-31).06
Gültig im Bereich des gregorianischen Kalenders
Das Jahr sei in der Variablen jahr abgelegt.
Christi Himmelfahrt ergibt sich dann folgendermaßen :
Das Datum wird aus den Werten der beiden Größen d und e ermittelt. Um
diese zu erhalten braucht man eine eine Reihe von Hilfsgrößen, die wir
a, b, c, p, q, r, x und y nennen. Beachten Sie, wie die Hilfsgrößen
voneinander abhängen.
p = jahr div 100 | ||
q = p div 3 | r = p div 4 | |
x = (15+p-q-r) mod 30 | y = (4+p-r) mod 7 | |
a = jahr mod 19 | b = jahr mod 4 | c = jahr mod 7 |
d = (19*a+x) mod 30 | ||
e = (2*b+4*c+6*d+y) mod 7 |
Jetzt kann man d und e auswerten
d==28 und e==6 , so gilt :
Dreifaltigkeitstag ist am 13.06
d==29 und e==6 , so gilt :
Dreifaltigkeitstag ist am 14.06
ansonsten gilt
ist d+e<15 , so gilt
Dreifaltigkeitstag ist am (17+d+e).05
ist d+e>=15, so gilt
Dreifaltigkeitstag ist am (d+e-14).06
Gültig im Bereich des gregorianischen Kalenders
Das Jahr sei in der Variablen jahr abgelegt.
Christi Himmelfahrt ergibt sich dann folgendermaßen :
Das Datum wird aus den Werten der beiden Größen d und e ermittelt. Um
diese zu erhalten braucht man eine eine Reihe von Hilfsgrößen, die wir
a, b, c, p, q, r, x und y nennen. Beachten Sie, wie die Hilfsgrößen
voneinander abhängen.
p = jahr div 100 | ||
q = p div 3 | r = p div 4 | |
x = (15+p-q-r) mod 30 | y = (4+p-r) mod 7 | |
a = jahr mod 19 | b = jahr mod 4 | c = jahr mod 7 |
d = (19*a+x) mod 30 | ||
e = (2*b+4*c+6*d+y) mod 7 |
Jetzt kann man d und e auswerten
d==28 und e==6 , so gilt :
Fronleichnam ist am 17.06
d==29 und e==6 , so gilt :
Fronleichnam ist am 18.06
ansonsten gilt
ist d+e<11 , so gilt
Dreifaltigkeitstag ist am (21+d+e).05
ist d+e>=11, so gilt
Dreifaltigkeitstag ist am (d+e-10).06
Wochentag zum Datum
Wann ist Ostern
Kalenderberechnungen
Anlegen einer Datumsklasse