Delphi-PRAXiS
Seite 4 von 5   « Erste     234 5      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Datum letzter Samstag? (https://www.delphipraxis.net/181188-datum-letzter-samstag.html)

Stevie 24. Jul 2014 08:43

AW: Datum letzter Samstag?
 
Zitat:

Zitat von baumina (Beitrag 1266502)
8-) dass so eine süße kleine Frage so viel Grundlage bietet, dass ich hier 29 Beiträge dazu lesen durfte.

Sommerloch :lol:

Dejan Vu 24. Jul 2014 09:07

AW: Datum letzter Samstag?
 
Zitat:

Zitat von Zoot (Beitrag 1266489)
Diese Version ist aber doch genauso abhängig davon, wie die Wochentage kodiert sind, da du nunmal DayOfWeek verwendest.

Mist, das kommt davon, wenn man die Konstante 'DaySaturday' selbst definiert. Die ursprüngliche Version ging natürlich davon aus, das das in den Utilities deklariert ist (was sie zu meinem Erstaunen aber nicht ist). Daher auch die Anmerkung 'egal ob string, enum oder integer'.

Es sollte auch Unittests zu Posts geben. :oops:

Zitat:

Zitat von Stevie (Beitrag 1266509)
Sommerloch :lol:

Prust.

AlexII 24. Jul 2014 09:46

AW: Datum letzter Samstag?
 
Wow... das ist ja fast wie die Relativitätstheorie. :roteyes:

Und letzter Sonntag wäre dann?
Delphi-Quellcode:
 result := Date - DayOfWeek(Date) + 1;

Sir Rufo 24. Jul 2014 09:48

AW: Datum letzter Samstag?
 
Zitat:

Zitat von AlexII (Beitrag 1266515)
Wow... das ist ja fast wie die Relativitätstheorie. :roteyes:

Und letzter Sonntag wäre dann?
Delphi-Quellcode:
 result := Date - DayOfWeek(Date) + 1;

Nur, wenn der aktuelle Tag kein Sonntag ist :warn:

Sir Rufo 24. Jul 2014 09:58

AW: Datum letzter Samstag?
 
Zitat:

Zitat von Zoot (Beitrag 1266496)
Noch ein Vorschlag ohne Schleife.

Delphi-Quellcode:
Function LastDow (const DateToMatch : TDateTime; const DowToMatch : Byte) : TDateTime;
begin
   result := DateToMatch - ((7 - DowToMatch + DayOfTheWeek(DateToMatch)) mod 7);
   if result = DateToMatch then
      result := result - 7;
end;
LastDow(Date, DayFriday) sollte dann den 18.7. ergeben.

Kleine Verbesserung :)
Delphi-Quellcode:
Function LastDow (const DateToMatch : TDateTime; const DowToMatch : Byte) : TDateTime;
begin
  result := ( DateToMatch - 1 ) - ((DaysPerWeek - DowToMatch + DayOfTheWeek( DateToMatch - 1 )) mod DaysPerWeek);
end;

Zoot 24. Jul 2014 10:47

AW: Datum letzter Samstag?
 
Zitat:

Zitat von Sir Rufo (Beitrag 1266520)
Kleine Verbesserung :)
Delphi-Quellcode:
Function LastDow (const DateToMatch : TDateTime; const DowToMatch : Byte) : TDateTime;
begin
  result := ( DateToMatch - 1 ) - ((DaysPerWeek - DowToMatch + DayOfTheWeek( DateToMatch - 1 )) mod DaysPerWeek);
end;

ok, das gefällt :thumb:

himitsu 24. Jul 2014 10:53

AW: Datum letzter Samstag?
 
Zitat:

Zitat von Alex_ITA01 (Beitrag 1266439)
Delphi-Quellcode:
  call [B]DayOfWeek[/B] //DayOfTheWeek gibts nicht

Zitat:

Zitat von DeddyH (Beitrag 1266442)
DayOfTheWeek gibt es sehr wohl:

Jupp, man muß nur mal in die OH schauen und bemerken, daß DayOfTheWeek sich in einer anderen (neuen) Unit befindet, welche man natürlich auch einbinden sollte. :stupid:

Delphi-Quellcode:
function LastDow(DowToMatch: Word{selber Typ wie DayOfTheWeek ... k.A. warum es eventuell mehr als 255 Wochentage geben könnte}; DateToMatch: TDate=0; Weeks: Integer=-1): TDateTime;
begin
  if DateToMatch = 0 then
    DateToMatch = Date;
  Result := (DateToMatch - 1) - ((DaysPerWeek - DowToMatch + DayOfTheWeek(DateToMatch - 1)) mod DaysPerWeek) + (Weeks + 1) * DaysPerWeek;
end;

function NextDow(DowToMatch: Word; DateToMatch: TDate=0; Weeks: Integer=+1):
... // NextDow ist ja nicht einfach nur (LastDow + DaysPerWeek), jedenfalls nicht, falls das DateToMatch zufällig bereits der DowToMatch wäre.
Und schon würde es bestimmt gut ins DateUtils rein passen.

Der schöne Günther 24. Jul 2014 11:05

AW: Datum letzter Samstag?
 
Möchte jemand die Behandlung jetzt noch auf verschiedene Zeitzonen erweitern?

AlexII 24. Jul 2014 12:08

AW: Datum letzter Samstag?
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1266536)
Möchte jemand die Behandlung jetzt noch auf verschiedene Zeitzonen erweitern?

Und gleich für alle Tage der Woche oder wenigstens noch für den Sonntag! :thumb:

p80286 24. Jul 2014 12:12

AW: Datum letzter Samstag?
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1266536)
Möchte jemand die Behandlung jetzt noch auf verschiedene Zeitzonen erweitern?

Das ist wohl nicht notwendig, da die Fragestellung sich vordergründig auf den Standort des Fragenden bezieht. Auch wenn man an den Datumsübergang denkt ist es überflüssig, da der Wochentag und das Datum streng aneinander gebunden sind. Wenn sich der Wochentag ändert, dann ändert sich auch das Datum.
Aber wie wär es hier mit:
London 7.00 Sonntag Vormittag welcher Wochentag ist in Wellington

Gruß
K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:51 Uhr.
Seite 4 von 5   « Erste     234 5      

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