Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Datum ohne Samstag Sonntag (https://www.delphipraxis.net/169169-datum-ohne-samstag-sonntag.html)

t0mmy 3. Jul 2012 12:27

Datum ohne Samstag Sonntag
 
Also ich hab eine kleine funktion mit der ich ein Datum bestimmen möchte:

Und zwar geht das von heute +5 Tage, aber Samstag und Sonntag dürfen nicht dabei sein

Wie setzte ich das am besten um?

unheilig1977 3. Jul 2012 12:42

AW: Datum ohne Samstag Sonntag
 
Hallo,

wenn das Ausgangsdatum auch immer ein Wochentag ist und als Enddatum auch ein Feiertag rauskommen darf, kannst Du immer + 7 rechnen.

Gruß Jörg

Iwo Asnet 3. Jul 2012 12:48

AW: Datum ohne Samstag Sonntag
 
Ah, also sozusagen +5 Arbeitstage...
Du kannst das iterativ machen und bei jedem Zwischenergebnis auf Samstag/Sonntag/Feiertag prüfen.

Delphi-Quellcode:
Function AddiereArbeitstage(Datum : TDateTime; AT : Integer) : TDateTime;
Const
  WeekDays = [2,3,4,5,6];
Begin
  Assert (DayOfWeek(Result) in WeekDays,'Datum muss ein Wochentag sein');
  Assert (AT > 0, 'Funktion zählt nur nach vorne');
  Result := Datum;
  While AT>0 Do begin
    Result := Result + 1;
    if DayOfWeek(Result) in WeekDays then
      dec(AT);
  End
End;
Bestimmt gibt es auch eine Formel, aber o.g. kleine Schleife lässt sich mit geeigneten Mitteln auvch so erweitern, das deutsche Feiertage (TSRCal) auch berücksichtigt werden.

Uwe Raabe 3. Jul 2012 16:12

AW: Datum ohne Samstag Sonntag
 
Die Aufgabenstellung ist nicht ausreichend beschrieben. Wenn immer 5 Arbeitstage zugezählt werden sollen, dann kann man gleich +7 rechnen. Sollen auf das Datum 5 Tage zugezählt werden und wenn das dann ein Samstag oder Sonntag ist, wird der darauffolgende Montag genommen, käme folgendes in Frage:

Delphi-Quellcode:
const
  { 1 = Sonntag }
  cAddDays: array[1..7] of Integer = (5, 7, 6, 5, 5, 5, 5);
var
  alt, neu: TDateTime;
begin
  ...
  neu := alt + cAddDays[DayOfWeek(tag)];
  ...
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:21 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz