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