Home » Tipps & Tricks » Algorithmen » Feiertage » Buß- und Bettag

Buß- und Bettag

Folgende Funktion berechnet das Datum des Buß- und Bettages eines bestimmten Jahres:

function WochenTag(AYear, AMonth, ADay: integer): integer;
var i: integer;
begin
  i := DayOfWeek(EncodeDate(AYear, AMonth, ADay))-1;
  if i=0 then i:=7;
  result := i;
end;

procedure Buss_BetTag(year: integer; var bday: integer);
var b: integer;
begin
  b := WochenTag(year, 11, 1);
  if b < 3 then
    inc(b,7);
  bday := 25-b;
end;

Die Procedure wird folgendermaßen aufgerufen:

procedure TForm1.Button1Click(Sender: TObject);
var
  BDay: Integer;
begin
  Buss_BetTag(2001, BDay);  //Jahr 2001
  Label1.Caption := IntToStr(BDay);
end;

Der Buß- und Bettag würde im Jahr 2001 auf den 25. fallen (November).