Ergänzung Ostersonntag:
Zitat Wikipedia:
Zitat:
Obwohl die Gaußsche Osterformel den Oster-Algorithmus elegant kurz darstellt, werden zwei Ausnahmen von ihr nicht erfasst. Heiner Lichtenberg hat 1997 eine Modifikation der Formel vorgeschlagen, mit der keine Ausnahmen extra beachtet werden müssen. Diese Formel ist nachfolgend wiedergegeben
http://de.wikipedia.org/wiki/Gaußsche_Osterformel
1. die Säkularzahl: K(X) = X div 100
2. die säkulare Mondschaltung: M(K) = 15 + (3K + 3) div 4 − (8K + 13) div 25
3. die säkulare Sonnenschaltung: S(K) = 2 − (3K + 3) div 4
4. den Mondparameter: A(X) = X mod 19
5. den Keim für den ersten Vollmond im Frühling: D(A,M) = (19A + M) mod 30
6. die kalendarische Korrekturgröße: R(D,A) = D div 29 + (D div 28 − D div 29) (A div 11)
7. die Ostergrenze: OG(D,R) = 21 + D − R
8. den ersten Sonntag im März: SZ(X,S) = 7 − (X + X div 4 + S) mod 7
9. die Entfernung des Ostersonntags von der
Ostergrenze (Osterentfernung in Tagen): OE(OG,SZ) = 7 − (OG − SZ) mod 7
10. das Datum des Ostersonntags als Märzdatum
(32. März = 1. April usw.):
OS = OG + OE
hier habe ich folgenden Code nach dieser Formel gefunden:
http://cerebrumsoft.org/node/54
Delphi-Quellcode:
(* Hucke
Berechnung des Ostersonntag
Algorithmus nach Gauß
modifiziert von Lichtenberg
aus: Wikipedia "Gaußsche Osterformel" 26.02.2008
*)
uses
sysutils;
function EasterSunday_Lichtenberg(
const Jahr :integer): TDateTime;
var
k,
// Säkularzahl säkular = weltlich im Gegensatz zu kirchlich
m,
// säkulare Mondschaltung
s,
// säkulare Sonnenschaltung
a,
// Mondparameter
d,
// erster Vollmond im Frühling
r,
// kalendarische Korrekturgröße
og,
// Ostergrenze
sz,
// erster Sonntag im März
oe,
// Differenz Ostersonntag Ostergrenze (Osterentfernung)
os,
// Ostersonntag als Märzdatum
tag,
monat : integer;
begin
k := Jahr
div 100;
m := 15 + (3 * k + 3)
div 4 - (8 * k + 13)
div 25;
s := 2 - (3*k + 3 )
div 4;
a := Jahr
mod 19;
d := (19 * a + m )
mod 30;
r := d
div 29 + (d
div 28 - d
div 29) * (a
div 11);
og := 21 + d - r;
sz := 7 - (Jahr + Jahr
div 4 + s )
mod 7;
oe := 7 - (og - sz)
mod 7;
os := og + oe;
if os <= 31
then begin
Tag :=
os;
Monat := 3;
end
else begin
Tag :=
os - 31;
Monat := 4;
end;
result := encodedate(jahr, Monat, Tag);
end;
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.