Auf dem Konzil von Nicäa (325 n. Chr.) wurde festgelegt, daß Ostern immer auf den Sonntag nach dem ersten Frühlingsvollmond fällt. Da die Dauer eines Jahres kein Vielfaches der Dauer eines Mondumlaufs um die Erde bzw., anders ausgedrückt, die Sonnenperiode kein Vielfaches der Mondperiode ist, wird Ostern somit zu einem beweglichen Fest zwischen dem 22. März und 25. April eines jeden Jahres.
Eine offizielle Erläuterung findet sich unter: http://www.ptb.de/de/org/4/43/432/oste.htm
Public Function Ostern(Jahr As Integer) As Date 'Ostern nach Physikalisch Technische Bundesanstalt 'http://www.ptb.de/de/org/4/43/432/oste.htm Dim K, M, S, A, D, R, OG, SZ, OE, OS As Integer K = ( Jahr \ 100 ) M = 15 + (( 3*K+3 ) \ 4 ) - (( 8*K+13 ) \ 25 ) S = 2 - (( 3*K+3 ) \ 4 ) A = Jahr Mod 19 D = ( 19 * A + M) Mod 30 R = ( D \ 29 ) + ( ( D \ 28 ) - ( D \ 29 )) * ( A \ 11 ) OG = 21 + D - R ' Märzdatum des Ostervollmonds (= 14. Tag des ersten Monats im Mondkalender, genannt Nisanu) SZ = 7 - ( (Jahr + ( Jahr \ 4 ) + S ) Mod 7 ) ' - Datum des 1. Sonntags im März OE = 7 - ( (OG - SZ) Mod 7 ) OS = OG + OE Ostern = DateSerial( Jahr, 3, OS) End Function
function Ostern($year,$add_days=0) { // Ostern (Sonntag) //Ostern nach Physikalisch Technische Bundesanstalt //http://www.ptb.de/de/org/4/43/432/oste.htm $K = floor( $year / 100 ); $M = 15 + floor(( 3*$K+3 ) / 4 ) - floor(( 8*$K+13 ) / 25 ); $S = 2 - floor(( 3*$K+3 ) / 4 ); $A = $year%19; $D = ( 19 * $A + $M) % 30; $R = floor( $D / 29 ) + ( floor( $D / 28 ) - floor( $D / 29 )) * floor( $A / 11 ); $OG = 21 + $D - $R;// Märzdatum des Ostervollmonds (= 14. Tag des ersten Monats im Mondkalender, genannt Nisanu) $SZ = 7 - ( ($year + floor( $year / 4 ) + $S ) % 7 );// - Datum des 1. Sonntags im März $OE = 7 - ( ($OG - $SZ) % 7 ); $OS = $OG + $OE; return DateSerial( $year, 3, $OS, $add_days); }
Natürlich gibt es noch andere Feiertage und wie berechnet man diese?
Feiertag | Datum |
---|---|
Neujahr | 01.01. |
Muttertag | 2. Sonntag im Mai = 15.05. - Wochentag( 01.05. relativ zu Montag=1) |
Hl. Drei Könige | 06.01. |
Valentinstag | 14.02. |
Weiber Fastnacht | Ostern - 52 |
Rosenmontag | Ostern - 48 |
Aschermittwoch | Ostern - 46 |
Karfreitag | Ostern - 2 |
Ostersonntag | Ostern |
Ostermontag | Ostern + 1 |
Tag der Arbeit | 01.05. |
Christi Himmelfahrt Vatertag |
Ostern + 39 |
Pfingstsonntag | Ostern + 49 |
Pfingstmontag | Ostern + 50 |
Fronleichnahm | Ostern + 60 |
Mariä Himmelfahrt | 15.08. |
Nationalfeiertag | 03.10. |
Allerheiligen | 01.11. |
1. Advent | 4ter Sonntag vor dem 1ten Weihnachtstag ( 27.11. - 04.12.) Weihnachtstag - Wochentag( Weihnachtstag relativ zu Montag=1) - 21 |
2. Advent | Weihnachtstag - Wochentag( Weihnachtstag relativ zu Montag=1) - 14 |
3. Advent | Weihnachtstag - Wochentag( Weihnachtstag relativ zu Montag=1) - 7 |
4. Advent | Weihnachtstag - Wochentag( Weihnachtstag relativ zu Montag=1) |
Nikolaus | 06.12. |
Heiligabend | 24.12. |
Erster Weihnachtstag | 25.12. |
Zweiter Weihnachtstag | 26.12. |
Silvester | 12.31. |
Die folgenden Erklärungen sind nur sinngemäß nach den angegebenen Normen.
Die erste Kalenderwoche ist die Woche eins Jahres, die den ersten Donnerstag des Jahres enthät.
Die erste Kalenderwoche ist die Woche eines Jahres, die mindestens vier von sieben Wochentagen enthält, wobei die Woche mit dem Monatg beginnt. Ein Jahr hat 53 Wochen, wenn es mit Donnerstag beginnt oder endet.
Diese Regelung umfaßt demnach einen Zeitraum von 400 Jahren und gibt einen durchschnittliche Jahresdauer von 365,2425 Tagen. Dies stimmt, wenn man bedenkt, wann diese Regelung getroffen wurde, erstaunlicherweise ziemlich exakt mit der tatsächlichen Dauer eines Jahres von 365,2422 Tagen überein.
Das PTB ist für die offizielle Zeit in Deutschland zuständig. Sie sendet die offizielle Zeit, die mit DCF77 Empfängern für jeden zur Verfügung steht. Hierüber werden z.B.sp. Server synchronisiert. Das PTB strahlt hierzu ein Signal aus, daß eine Zweistellige Jahreskennung, die Jahreszahl Modulo 100, ausstrahtl. Es gilt nun folgende Regelung
Ist die zweistellige Jahreszahl größer als 90, wird der Wert 1900 dazuaddiert, im anderen Falle der Wert 2000.
Damit ergibt sich der Termin: 01.01.2091
Der folgende Kalender besteht aus drei Seiten, die erste enthält dabei jeweils das letzte Jahr, die zweite das aktuelle und die dritte das nächste Jahr. Das Makro schützt alle Zellen, die nicht als Eintragsfelder gedacht sind. Damit sind also alle Zellen, die Tage, Wochen oder Monate enthlten gesperrt. Lediglich das Jahr auf der zweiten Seite ist frei, denn hierüber wird der Kalender neu erstellt. Damit das ganze funktioniert müssen einige vorkehrungen getroffen werden.