AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Code-Bibliothek Library: Sonstiges Ostersonntag eines Jahres berechnen
Thema durchsuchen
Ansicht
Themen-Optionen

Ostersonntag eines Jahres berechnen

Ein Thema von flomei · begonnen am 19. Jan 2005 · letzter Beitrag vom 1. Apr 2007
Antwort Antwort
Benutzerbild von flomei
flomei

Registriert seit: 17. Jan 2003
Ort: Schieder-Schwalenberg
2.094 Beiträge
 
Delphi 2005 Personal
 
#1

Ostersonntag eines Jahres berechnen

  Alt 19. Jan 2005, 00:05
Mit folgendem Code kann man das Datum des Ostersonntags in einem beliebigen Jahr berechnen.
Code stammt von mir aus diesem Programm.

Delphi-Quellcode:
{
  Diese Formel berechnet das Datum des Ostersonntags im Jahr "year".
  Ostersonntag liegt immer zwischen dem 22. März und dem 25. April.
  Diese Formel stammt vom Mathematiker Carl Friedrich Gauß (1777-1855).

  Autor:    Florian Meier
  Webseite: [url]http://www.flomei.de[/url]

  Gruß und Dank an alle Mitglieder der Delphi-PRAXIS ([url]www.delphipraxis.net[/url])
}

 
function EasterSunday(year: Integer) : String;
var
  a, b, c, d, e: Integer;
begin
  a := year mod 19;
  b := year mod 4;
  c := year mod 7;
  d := ((a * 19) + 24) mod 30;
  e := (2 * b + 4 * c + 6 * d + 5) mod 7;

  if((22 + d + e) > 31) then
  begin
    Result := IntToStr((d + e - 9)) + '. April';
  end else
  begin
    Result := IntToStr((22 + d + e)) + '. März';
  end
end;
HTH!

MfG Florian

[edit]
Folgende Ergänzung traf von Billa per PN ein:
Zitat:
Gauss hat m.W.n. den Algorithmus eingegrenzt:

1. Er gilt nur von 1700 bis 2199

2. es gibt zwei Ausnahmen:

a) Anstelle des 26. Aprils ist immer der 19. April zu setzen,
b) Anstelle des 25. Aprils immer dann der 18. April, wenn d=28 und a>10.
[/edit]

[edit=Matze]Code formatiert. Mfg, Matze[/edit]
Florian Meier
... ist raus.
Vielen Dank für die Zeit mit euch!
http://www.flomei.de -- http://www.md5hash.de
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Ostersonntag eines Jahres berechnen

  Alt 1. Apr 2007, 21:23
Von Balu der Bär kommt noch folgende Alternative, die sich auf die Gaußsche Osterformel stützt (gilt nur von 1583 bis zum Jahr 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
Antwort Antwort

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 17:31 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz