Thema: Delphi Datum letzter Samstag?

Einzelnen Beitrag anzeigen

Dejan Vu
(Gast)

n/a Beiträge
 
#15

AW: Datum letzter Samstag?

  Alt 23. Jul 2014, 15:00
result := Date - DayOfWeek(Date);
Eine schöne Lösung, die aber stillschweigend davon ausgeht, das der Samstag mit 7 kodiert wird. Ändert sich das irgendwann, funktioniert die Lösung nicht mehr. Das ist zwar unwahrscheinlich (das sich das ändert), aber denkbar. Zudem wird eine Portierung in eine andere Sprache hier vermutlich nicht funktionieren.

So schön, minimalistisch und elegant Uwes Lösung auch ist, ich würde vielleicht doch eine Schleife bevorzugen:
Delphi-Quellcode:
Function LastSaturday(Date : TDateTime) : TDateTime;
Const
  DaySaturday = 7;

Begin
  Result := Date - 1;
  While DayOfWeek(Result) <> DaySaturday do Result := Result - 1;
End;
Hier ist es vollkommen egal, was DayOfWeek liefert (enum, integer, string etc.) Die Version läuft immer und überall (solange es Samstage gibt).

Alternative: ISO-8601-Routine verwenden;
Delphi-Quellcode:
function LastSaturday (aDate : TDateTime) : TDateTime;
Var
  LastSunday : TDateTime;
Begin
  LastSunday := EndOfTheWeek(aDate-7);
  Result := LastSunday - 1;
End;
Laut ISO ist der letzte Tag der Woche der Sonntag. Und die ISO ändert sich nicht, außer bei Übernahme durch Außerirdische/Nordkorea.
  Mit Zitat antworten Zitat