AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Datum ohne Samstag Sonntag

Ein Thema von t0mmy · begonnen am 3. Jul 2012 · letzter Beitrag vom 3. Jul 2012
Antwort Antwort
t0mmy

Registriert seit: 28. Jul 2010
431 Beiträge
 
Delphi 2010 Architect
 
#1

Datum ohne Samstag Sonntag

  Alt 3. Jul 2012, 13:27
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?
  Mit Zitat antworten Zitat
unheilig1977

Registriert seit: 28. Okt 2010
6 Beiträge
 
Delphi 2005 Personal
 
#2

AW: Datum ohne Samstag Sonntag

  Alt 3. Jul 2012, 13:42
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
Jörg
  Mit Zitat antworten Zitat
Iwo Asnet

Registriert seit: 11. Jun 2011
313 Beiträge
 
#3

AW: Datum ohne Samstag Sonntag

  Alt 3. Jul 2012, 13:48
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.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#4

AW: Datum ohne Samstag Sonntag

  Alt 3. Jul 2012, 17:12
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;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:38 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