(* Gaußsche Osterformel (Berechnung des Ostersonntages)
nach Carl Friedrich Gauß
Der 22. März is der früheste Termin, der 25. April der letzte, auf den Ostern fallen kann.
Gilt für die Jahre 1583 (Beginn des Gregorianischen Kalenders) bis 3900.
Umsetzung: Balu der Baer
*)
function EasterSunday(Year : Integer) : TDateTime;
var
a, b, c, d, e, H1, H2, n, m, temp, easter : Integer;
begin
if not ((Year > 1583)
and (Year < 3900))
then
raise Exception.CreateFmt('
function EasterSunday: parameter Year must be between 1583 and 3900 but is %d', [Year])
else begin
a := Year
mod 19;
b := Year
mod 4;
c := Year
mod 7;
H1 := Year
div 100;
H2 := Year
div 400;
n := 4 + H1 - H2;
m := 15 + H1 - H2 - ((8 * H1 + 13)
div 25);
d := (19 * a + m)
mod 30;
e := (2 * b + 4 * c + 6 * d + n)
mod 7;
if d + e = 35
then easter := 50;
if (d = 28)
and (e = 6)
and (a > 10)
then easter := 49
else easter := 22 + d + e;
if easter > 31
then
begin
temp := easter - 31;
case temp
of
26 : temp := 19;
25 :
if (d = 28)
and (a > 10)
then temp := 18;
end;
result := EncodeDate(Year, 4, temp);
end
else result := EncodeDate(Year, 3, easter);
end
end;
//Beispielaufruf:
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(DateTimeToStr(EasterSunday(StrToInt(Edit1.Text))));
end;