Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

Re: Berechnungen mit Arbeitstagen

  Alt 28. Okt 2009, 13:08
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
$2B or not $2B
  Mit Zitat antworten Zitat