Hallo Tom,
lege dir eine
Unit DateUtilsEx an und packe deine Kalenderfunktionen dort rein:
Delphi-Quellcode:
function IsNationalHoliday(dt: TDateTime): Boolean;
begin
Result := DayOfTheYear(dt) = 1;
end;
function IsWorkDay(dt: TDateTime): Boolean;
begin
Result := (DayOfWeek(dt) in [2..6])
and not IsNationalHoliday(dt);
end;
function NextWorkDay(dt: TDateTime): TDateTime;
begin
Result := Trunc(dt);
repeat
Result := Result + 1;
until IsWorkDay(Result);
end;
function NextWeekDay(dt: TDateTime): TDateTime;
var
wd: Integer;
begin
wd := DayOfWeek(dt);
Result := Trunc(dt) + Succ(Ord(wd > 5) + Ord(wd = 6));
end;
function NextMonday(dt: TDateTime): TDateTime;
begin
Result := dt + (7 - Pred(DayOfTheWeek(dt))) mod 7;
end;
Wenn du IsNationalHoliday() geschickt erweiterst, dann hast du eine lokalisierbare Allgemeinlösung. Die lokalisierten Wochentagsnamen findest du in der
Unit SysUtils (ShortDayNames bzw. LongDayNames).
Guten Rutsch