Hallo Wolfang,
ich habe den Code im Rahmen meiner 3-minütigen Tageslangeweile mal entsprechend der üblichen Gegenbenheiten unter uns Delphi Entwicklern etwas umformatiert.
Delphi-Quellcode:
// Osterformel mit computus ecclesiasticus
function GetEasterDate(Jahr: Integer): TDate; // Jahr des gregorianischen Kalenders
var
G, X, Z, D, E, N: Integer;
Jahrhundert,
Tag,
Monat: Integer;
MyDate: TDate;
begin
G := (Jahr mod 19) + 1;
Jahrhundert := Jahr div 100 + 1;
X := 3 * Jahrhundert div 4 - 12;
Z := (8 * Jahrhundert + 5) div 25 - 5;
D := (5 * Jahr) div 4 - X - 10;
E := (11 * G + 20 + Z - X) mod 30;
if ((E = 25) and (G > 11)) or (E = 24) then // Klammerung?
Inc(E);
N := 44 - E;
if N < 21 then
Inc(N, 30);
N := N + 7 - (D + N) mod 7;
if N > 31 then
begin
Tag := n - 31; // (n-31).April
Monat := 4;
end
else
begin
Tag := N; // n.März
Monat := 3;
end;
{------Soweit der Originalcode---------}
MyDate := EncodeDate(Jahr, Monat, Tag);
Result := MyDate;
end;
Ich habe die Klammerung für den Vergleich von E angepasst: Wenn E = 25 und G > 11 soll E um 1 erhöht werden, ebenso im Falle E = 24.
Quelle:
http://user.cs.tu-berlin.de/~csadm/w...01/blatt01.pdf
Gruß,
Assertor
P.S.: Unabhängig vom Nutzen, gerne weiter so!