AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Buss - BetTag richtig berechnen

Ein Thema von Hobby-Programmierer · begonnen am 26. Jan 2006 · letzter Beitrag vom 27. Jan 2006
Antwort Antwort
Hobby-Programmierer

Registriert seit: 19. Jan 2006
Ort: München
392 Beiträge
 
Delphi XE Starter
 
#1

Buss - BetTag richtig berechnen

  Alt 26. Jan 2006, 12:10
Mahlzeit ...,

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:
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;
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 ...

Jetzt habe ich meine Function umgestellt, bin mir aber net sicher ob ich das so korrekt ist - richtig rechnen tut sie zumindest ...

Delphi-Quellcode:
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;
Vielleicht kennt jemand von Euch einen bessere Berechnung oder kann andere Vorschläge machen.

Danke und Gruss Mario
Mario
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

Re: Buss - BetTag richtig berechnen

  Alt 26. Jan 2006, 12:39
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;
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
Benutzerbild von Gollum
Gollum

Registriert seit: 14. Jan 2003
Ort: Boxberg
456 Beiträge
 
Delphi 10.1 Berlin Professional
 
#3

Re: Buss - BetTag richtig berechnen

  Alt 26. Jan 2006, 13:09
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:
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
Siehe auch: kalenderlexikon.de
  Mit Zitat antworten Zitat
Hobby-Programmierer

Registriert seit: 19. Jan 2006
Ort: München
392 Beiträge
 
Delphi XE Starter
 
#4

Re: Buss - BetTag richtig berechnen

  Alt 27. Jan 2006, 22:56
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

Ü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 ; das mit dem Kirchenjahr hatte ich leider überlesen

Danke nochmal, Gruss Mario
Mario
  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 00:16 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