Announcement

Collapse
No announcement yet.

Ostersonntag berechnen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Ostersonntag berechnen

    Hallo !<p>
    Vor kurzem suchte ich eine Routine zum Berechnen des Osterdatums.<br>
    Ich fand diese in der Zeitschrift ct Heft 2/2002 S. 193 als<br>
    Visual Basic Excel Makro.<br>
    Ich habe den Code in Delphi umgesetzt (s. unten) aber egal welche<br>
    vierstellige Jahreszahl man eingibt, es wird immer ein Donnerstag<br>
    als Ergebnis präsentiert !<p>
    Ich habe den Text mehrfach überprüft, konnte aber keine Abweichungen<br>
    vom Original erkennen.<p>
    Vielen Dank für eventuelle Hilfe !<p>
    Gruß Marcus<p>
    <pre>
    function TMonthTable.Ostersonntag(intJahr: Integer): TDateTime;
    var intA, intB, intC, intD, intE ,intF: Integer;
    intTag, intMonat: Integer;
    begin
    intA:=intJahr mod 19;
    intB:=intJahr mod 4;
    intC:=intJahr mod 7;
    intD:=(19*intA+24) mod 30;
    intE:=(2*intB+4*intC+6*intD+5) mod 7;
    intTag:=22+intD+intE;
    intMonat:=3;
    if intTag>31 then begin
    intTag:=intD+intE-9;
    intMonat:=3;
    end;
    if (intTag=26) and (intMonat=4) then
    intTag:=19;
    if (intTag=25) and (intMonat=4)and (intD=28) and (intE=6) and (intA>10) then
    intTag:=18;
    Result:=EncodeDate(intJahr,intMonat,intTag);
    end;
    </pre>

  • #2
    Für dein Problem bietet die Jedi Code Library (http://www.delphi-jedi.org) eine Funktions namens "EasterSunday". Diese sollte dir weiterhelfen

    Comment


    • #3
      Moin,
      ich habe eine groessere Paradox-Library anzubieten, die alle Feiertage berechnet!

      Bei Interesse - kurze Info, weil per E-Mail.

      R

      Comment


      • #4
        Vielen Dank, Bernhard, habe ich schon runtergeladen und eingebaut !<p>
        Gruß Marcu

        Comment


        • #5
          Hallo,

          auf http://www.delphi-download.de findest du den Delphi-Quellcode und andere nützliche Sachen dazu, wie Feiertage, Arbeitstage berechnen usw.

          mfg Klaus-Pete

          Comment


          • #6
            Hier mal ein Auszug:
            <pre>
            function TFeiertag.Ostern(value:Integer):TDate;
            {Das Problem liegt darin, daß der Wert 0 das Datum vom 30.12.1899 repräsentiert.
            Der Gregorianische Kalender aber seit 1583 gültig ist. Es sollte aber für
            unsere Kalenderkomponente reichen, wenn wir mit dem Anfangsdatum von Delphi
            rechnen.}
            var
            a, b, c, d, e, y, vTag, vMonat: word;
            tmp: Integer;
            begin
            y := value;
            a := y mod 19;
            b := y mod 4;
            c := y mod 7;
            d := (19*a+24) mod 30;
            e := (2*b+4*c+6*d+5) mod 7;
            vTag := 22 + d + e;
            vMonat := 3;
            if vTag > 31 then begin
            vTag := d + e - 9;
            vMonat := 4;
            end else begin
            if (vTag = 26) and (vMonat = 4) then begin
            vtag := 19;
            end else begin
            if (vTag = 25) and (vMonat = 4) and (d = 28) and (e = 6) and (a>10) then
            vTag := 18;
            end;
            end;

            {Ostersonntag}
            result := EncodeDate(y,vMonat,vTag);

            {Karfreitag}
            FKarfreitag := result - 2;

            {Ostermontag}
            FOstermontag := result + 1;

            {Himmelfahrt}
            FHimmelfahrt := result + 39;

            {Pfingsten}
            FPfingstsonntag := result + 49;
            FPfingstmontag := result + 50;

            {Fronleichnam}
            if FBundesland in [BW,BY,HE,NW,RP,SL,SN,TH] then
            FFronleichnam := result +60;

            {Buß- und Bettag}
            if FBundesland = SN then begin
            tmp := Trunc(StrToDate('17.11.'+IntToStr(FJahr)));
            while DayOfWeek(tmp) <> 4 do tmp := tmp + 1;
            FBussBettag := tmp;
            end;
            end;
            </pre>

            mfg Klaus-Pete

            Comment


            • #7
              Hallo!

              Die beste Seite für Kalender-Fragen ist m.E.

              http://www.computus.de/kalenderlinks/kalenderlinks.htm

              Auf dieser Seite nach unten scrollen und das Herz geht auf.

              Gruß
              Bernhar

              Comment


              • #8
                Hallo Marcus,

                schau doch mal in den Entwickler, Heft 2/2002, Seite 48. Das hilft Dir sicherlich weiter.

                Mit freundlichem Gruß

                Hans Grigul

                Comment

                Working...
                X