![]() |
Buss - BetTag richtig berechnen
Mahlzeit :-D ...,
beim Neu/Umcoden eines älteren Programms von mir stehe ich vor einem Rätsel! Bisher hatte ich den den Buss und Bettag wie folgt berechnet:
Delphi-Quellcode:
Habe aber vorhin mit erstaunen festgestellt das meine Function falsch rechnet! Dachte mir kein Problem, habe hier im Forum gesucht und leider feststellen müssen das alle Routinen die ich gefunden habe ebenso falsch liegen. Gegoogelt und ebenso Fehlanzeige ...
Function GetBBetTag(Jahr: Word): TDate; //Buß-und Bettag
var Datum: TDate; begin Datum:= EncodeDate(Jahr, 11, 1); Result:= Datum + ((11 - DayOfWeek(Datum)) mod 7) + 14; end; Jetzt habe ich meine Function umgestellt, bin mir aber net sicher ob ich das so korrekt ist - richtig rechnen tut sie zumindest ...
Delphi-Quellcode:
Vielleicht kennt jemand von Euch einen bessere Berechnung oder kann andere Vorschläge machen.
Function GetBBetTag(Jahr: Word): TDate; //Buß-und Bettag
var Datum: TDate; begin Datum:= EncodeDate(Jahr, 11, 1); Result:= Datum + ((11 - DayOfWeek(Datum)) mod 7) + 14; if DayOfWeek(Datum) = 4 then Result:= Result + 7; end; Danke und Gruss Mario |
Re: Buss - BetTag richtig berechnen
Nicht getestet, sollte aber so gehen:
Delphi-Quellcode:
Function GetBBetTag(Jahr: Word): TDate; //Buß-und Bettag
var Datum: TDate; begin Datum := EncodeDate(Jahr, 11, 15); Result := Datum + (10 - DayOfWeek(Datum)) mod 7; end; |
Re: Buss - BetTag richtig berechnen
Hallo,
die Berechnung des Buß- und Bettags ist mit den o.g. Formeln so nicht richtig. Das Datum des Buß- und Bettages richtet sich nach dem Kirchenjahr. Definition: Mittwoch vor dem letzten Sonntag des Kirchenjahres. Dies ist per Definition, der Sonntag vor dem 1. Advent. Der Beginn des Kirchenjahres ist somit der 1. Advent. Um nun den den Buß- und Bettag richtig zu berechnen, muss der der 4. Advent ermittelt werden und von diesem Datum müssen dann 32 Tage abgezogen werden. Der 4. Advent ist als der Sonntag vor dem 1. Weihnachtsfeiertag definiert.
Delphi-Quellcode:
Siehe auch:
uses
DateUtils; .... function BussBettag(aJahr:Integer):TDateTime; var advent:TDateTime; begin // Datum des Heiligen Abends; 24.12 advent:=EncodeDate(aJahr); // 4. Advent ermitteln; Sonntag vor dem 1.Weihnachtsfeiertag while not (DayOfTheWeek(advent)=7) do advent:=advent-1.0; //so, zum Schluss noch 32 Tage abziehen Result:=advent-32; end; // BussBettag ![]() |
Re: Buss - BetTag richtig berechnen
Super !! und vielen Dank.
Mich verwundert nur das alle mir bekannten Sourcen falsch rechnen, eben vom 3. Mittwoch im November ausgehen! Bisher hatte ja auch das Datum des Feiertages immer gestimmt, nur im exotischem 2006 nicht :? Sei's drum, jetzt kann ich dat ja besser :P Übrigens: den Link kannte ich, ziehe ich immer zu rate wenn ich was zu bestimmten Feiertagen wissen möchte. Hatte ich auch als sich ein Benutzer meiner Dienstplanverwaltung beschwerte :x ; das mit dem Kirchenjahr hatte ich leider überlesen :wall: Danke nochmal, Gruss Mario :dancer: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:56 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