Theoretisch sollte es möglich sein, dieses auch ohne Schleife zu berechnen,
aber irgendwie wollte das gard nicht so klappen
- schauen wo in der Woche man sich gerade befindet
- das Datum zum Wochenanfang zurückrechnen und sich die Tage in der aktuellen Woche merken
- Restzeit durch 5 mal 7 (Ganzzahldivision ... Rest merken)
- Produkt nehmen und die gemerten Tage/Reste wieder dazurechnen
- Datum - diese Summe = Anfang
(nja, so in etwa irgendwie)
aber mit 'ner Schleife ginge es wohl auch so
(DayOfTheWeek: 1=Montag ... 7=Sonntag)
Delphi-Quellcode:
Type TDayOfTheWeekSet =
Set of 1..7;
Function IncDays(D: TDateTime; Days: Integer = 1; Ignored: TDayOfTheWeekSet = [6, 7]): TDateTime;
Var i: Integer;
Begin
i := 0;
While Days > 0
do Begin
If not (DayOfTheWeek(D + i)
in Ignored)
Then Dec(Days);
Inc(i);
End;
While Days < 0
do Begin
If not (DayOfTheWeek(D + i)
in Ignored)
Then Inc(Days);
Dec(i);
End;
Result := D + i;
// wegen Rundungsfehlern erst hier einrechnen
End;
Function DecDays(D: TDateTime; Days: Integer = 1; Ignored: TDayOfTheWeekSet = [6, 7]): TDateTime;
Begin
Result := IncDays(D, -Days, Ignored);
End;
[edit]
die Definition des SET vergessen
nja, wenn ich den Baitrag von marabu so seh, dann lieg ich schonmal mit meiner Überlegung nicht ganz falsch