Ostern berechnen

Ein geklautes Beispiel eines wahrscheinlich klassischen Algorithmus: berechne mir doch bitte, wann im Jahre sowieso Ostern ist. Das Programm scheint einer Zeitschrift zu entstammen, wurde wüst für VBA programmiert und von mir auf SO angepasst und verschönert. Aber fragt mich bitte nicht nach den Hintergründen des Verfahrens!

Der Algorithmus scheint nur für die Jahre 1901 bis 2077 zu funktionieren. Ansonsten liefert er den 1.1.1000 zurück.

Function Ostern(Jahr As Integer) As Date
   Dim A, B, C, D, E, M, N, O, Monat As Integer

   If Jahr < 1900 Or Jahr > 2078 Then
      ' ausserhalb des Bereiches: 1.1.1000 zurückgeben
      Ostern = DateSerial(1000, 1, 1)
   Else
      M = 24
      N = 5
      A = Jahr Mod 19
      B = Jahr Mod 4
      C = Jahr Mod 7
      D = (19 * A + M) Mod 30
      E = ((2 * B) + (4 * C) + (6 * D) + N) Mod 7
      O = 22 + D + E
   
      If O > 31 Then
         O = D + E - 9
         Monat = 4
         If O = 26 Then 
            O = 19
         ElseIf O = 25 And D = 28 And (Jahr Mod 19) > 10 Then 
            O = 18
         EndIf
      Else
         Monat = 3
      End If
   
      Ostern = DateSerial(Jahr, Monat, O)
   End If
End Function



Letzte Änderung: 06.04.98
Copyright ©1998 by Michael Herger