Delphi-Quellcode:
function DateOfWeek(Year, Week: Word): TDateTime;
begin
Result := EncodeDate(Year, 1, 1);
Result := Result - (DayOfWeek(Result -2) +3) mod 7 +3 + (Week -1) * 7;
end;
Berechnet das Datum zu einer Kalenderwoche und Jahr, kommt ohne Schleifen aus, kann mit negativen Kalenderwochen arbeiten und auch mit zu großen Kalenderwochenangaben.
Delphi-Quellcode:
function DayOfWeekGerman(ADate: TDateTime): Integer;
begin
Result := DayOfWeek(ADate) -1;
if Result <= 0 then Result := 7;
end;
function WeekOfDate(A: TDateTime): Integer;
var
Day: Integer;
Y,M,D: Word;
begin
Day := DayOfWeekGerman(A);
DecodeDate(A +4 -Day, Y, M, D);
Result := Round(((A +8 -Day) - EncodeDate(Y, 1, 1)) / 7);
end;
WeekOfDate() berechnet die KW zu einem Datum.
KEINE Garantie auf Richtigkeit !!
Gruß Hagen