Programmierung

Ostern mit vmEasterDate

Ostern steht vor der Tür, das älteste und wichtigste Fest der Christen. In unserer heutigen Welt geht häufig das Bewußtsein dafür verloren, dass sich wichtige Feste des Christentums nicht nach der Arithmetik des internationalen Kalenders richten, sondern nach dem Mond, und das in seiner sehr komplizierten Weise. Der Gregoranische Kalender zeigt uns im Alltagsleben sein Gesicht als Solarkalender, doch tatsächlich wird der gesamt Osterzyklus nach dem Mond berechnet. Dreh- und Angelpunkt ist das Datum des Ostersonntags, von dem die anderen in Bezug auf unser Kalendersystem beweglichen Feste abhängen.
CONZEPT 16 bietet zur Berechnung des Ostersonntag über vmEasterDate() eine Methode an, mit welcher dies sehr einfach umgesetzt werden kann.


Die sogenannte Osterformel, erstmals im Jahr 1800 von Carl Friedrich Gauß veröffentlicht, stellt heute häufig die Grundlage zur Berechnung des Ostersonntags. Diese wird allerdings irreführend als Formel bezeichnet, denn genau genommen handelt es sich hierbei um einen Satz von Gleichungen, in welchen der komplette Algorithmus der Osterrechnung Computus formuliert ist.
Überträgt man diese Formel nun in CONZEPT 16 bekommt man nun folgendes Erscheinungsbild:

{
   tA  # tYear % 19;
   tB  # tYear % 4;
   tC  # tYear % 7;
   tK  # tYear DIV 100;
   tP  # (8 * tK +13) DIV 25;
   tQ  # tK DIV 4;
   tM  # (15 + tK - tP - tQ) % 30;
   tN  # (4 + tK - tQ) % 7;
   tD  # (19 * tA + tM) % 30;
   tE  # (2 * tB + 4 * tC + 6 * tD + tN) % 7;
   tOS # (22 + tD + tE); // Ostersonntag als März-Datum

   if (tOS = 57)
   {
      tOS # 50;
   }
   if ((tD = 28) AND (tE = 6) AND (tA > 10))
   {
      tOS # 49;
   }
   if (tOS > 31)
   {
      // Ostersonntag befindet sich im April.
      tOS # tOS - 31;
      ...
   }
   else
   {
      // Ostersonntag befindet sich im März.
      ...
   }
}

Die Methode vmEasterDate() leistet diese Berechnung in einem kurzen und prägnanten Befehl. Unter Verwendung dieser Methode lassen sich nun folgende beweglichen Feiertage errechnen:

  • Fastnachtsdienstag: 47 Tage vor dem Ostersonntag
  • Aschermittwoch: 46 Tage vor Ostern
  • Karfreitag: 2 Tage vor dem Ostersonntag
  • Ostermontag: 1 Tag nach dem Ostersonntag
  • Christi Himmelfahrt: 39 Tage nach dem Ostersonntag
  • Pfingsten: 50 Tage nach Ostern
  • Fronleichnam: 60 Tage nach dem Ostersonntag

Beispiel:

define
{
   // Konstanten zur Berechnung des entsprechenden Datums
   mFastnachtdienstag : -47
   mAschermittwoch    : -46
   mKarfreitag        :  -2
   mOstermontag       :   1
   mHimmelfahrt       :  39
   mPfingsten         :  50
   mFronleichnam      :  60
}
{
   // Berechnung von Christi Himmelfahrt
   cAscensionDay->vmEasterDate(tYear);
   cAscensionDay->vmDayModify(mHimmelfahrt);
   ...
   // Berechnung von Pfingsten
   cPentecost->vmEasterDate(tYear);
   cPentecost->vmDayModify(mPfingsten);
   ...
}

Das Jahr, welches bei vmEasterDate() angegeben wird kann im Bereich 1700 bis 2199 liegen. Somit ist es garantiert, dass auch in den nächsten Jahren die beweglichen Feiertage mit CONZEPT 16 korrekt und einfach errechnet werden können.

2 Kommentare

2 Kommentare “Ostern mit vmEasterDate”

  1. @ Th.Eichele

    Im Beispiel wird bereits der Pfingstmontag berechnet.
    Da der Ostersonntag und Pfingstsonntag beide auf einen Sonntag fallen muss somit die Differenz beider Tage ein vielfaches von 7 sein, d.h der 49ste Tag nach dem Ostersonntag ist der Pfingstsonntag und der Tag 50 somit der Pfingstmontag.

Kommentar abgeben