AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Zusatz zu "Ostersonntag eines Jahres berechnen"
Thema durchsuchen
Ansicht
Themen-Optionen

Zusatz zu "Ostersonntag eines Jahres berechnen"

Ein Thema von Balu der Bär · begonnen am 1. Okt 2006 · letzter Beitrag vom 1. Okt 2006
 
Balu der Bär
(Gast)

n/a Beiträge
 
#1

Zusatz zu "Ostersonntag eines Jahres berechnen"

  Alt 1. Okt 2006, 08:37
Moin,

da ich mir grad ein paar Algorithmen angucke bin ich in der Codelib auf Ostersonntag eines Jahres berechnen von flomei gestoßen. Dabei fiel mir auf das flomei's Algorithmus nur von 1700 bis 2199 gilt. Also hier schnell meine Umsetzung, diese Berechnung gilt für die Jahre 1583 bis 3900:
Delphi-Quellcode:
(* 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;
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:29 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz