Difference between revisions of "Easter date/de"
From Free Pascal wiki
Jump to navigationJump to search (Created page with "{{Easter date}} <br> Dieses Beispiel berechnet das Osterdatum (Ostersonntag) nach der Formel von Carl Friedrich Gauß für den Zeitraum von 1583 - 8702.<br> <br> <syntaxhighli...") |
|||
Line 9: | Line 9: | ||
... | ... | ||
− | + | function funOstersonntag(wrdJahr: word): String; | |
// Osterfunktion nach Carl Friedrich Gauß (1800). Rückgabewert | // Osterfunktion nach Carl Friedrich Gauß (1800). Rückgabewert | ||
// ist das Datum des Ostersonntags im angegebenen Jahr | // ist das Datum des Ostersonntags im angegebenen Jahr | ||
Line 65: | Line 65: | ||
// Rückgabewert als Datum bereitstellen | // Rückgabewert als Datum bereitstellen | ||
− | + | Result := EncodeDate(wrdJahr, intMonat, intTage); | |
end; | end; |
Revision as of 07:49, 15 May 2013
Deutsch (de)
Dieses Beispiel berechnet das Osterdatum (Ostersonntag) nach der Formel von Carl Friedrich Gauß für den Zeitraum von 1583 - 8702.
uses
SysUtils, DateUtils, Dialogs;
...
function funOstersonntag(wrdJahr: word): String;
// Osterfunktion nach Carl Friedrich Gauß (1800). Rückgabewert
// ist das Datum des Ostersonntags im angegebenen Jahr
// Gültigkeitsbereich: 1583 - 8702
var
a: integer;
b: integer;
c: integer;
d: integer;
e: integer;
f: integer;
intTage: integer;
intMonat: integer;
begin
// Prüf, ob das Jahr korrekt ist
if wrdJahr < 1583 then
begin
ShowMessage('Das Jahr ist zu klein und liegt vor dem Jahr 1583.');
Exit;
end;
if wrdJahr > 8702 then
begin
ShowMessage('Das Jahr ist zu groß und liegt nach dem Jahr 8702.');
Exit;
end;
// Die Gauss-Formel
a := wrdJahr mod 19;
b := wrdJahr div 100;
c := (8 * b + 13) div 25 - 2;
d := b - (wrdJahr div 400) - 2;
e := (19 * (wrdJahr mod 19) + ((15 - c + d) mod 30)) mod 30;
if e = 28 then
if a > 10 then
e := 27
else if e = 29 then
e := 28;
f := (d + 6 * e + 2 * (wrdJahr mod 4) + 4 * (wrdJahr mod 7) + 6) mod 7;
if (e + f + 22) > 31 then
begin
intMonat := 4;
intTage := ((e + f + 22) - 31);
end
else
begin
intMonat := 3;
intTage := (e + f + 22);
end;
// Rückgabewert als Datum bereitstellen
Result := EncodeDate(wrdJahr, intMonat, intTage);
end;
--Olaf 05:45, 15 May 2013 (UTC)