![]() |
Delphi-Version: 7
Datum letzter Samstag?
Hallo,
wie finde ich das Datum vom letzten Samstag? Gibt's da vllt eine Funktion oder muss ich da selber rechnen? Thx |
AW: Datum letzter Samstag?
Delphi-Quellcode:
function LastSaturday(const AVAlue: TDateTime): TDateTime;
asm add esp,-$14 push dword ptr [ebp+$0c] push dword ptr [ebp+$08] call DayOfTheWeek movzx eax,ax inc eax neg eax mov [ebp-$14],eax fild dword ptr [ebp-$14] fadd qword ptr [ebp+$08] fstp qword ptr [ebp-$10] wait mov eax,[ebp-$10] mov [ebp-$08],eax mov eax,[ebp-$0c] mov [ebp-$04],eax fld qword ptr [ebp-$08] mov esp,ebp pop ebp ret $0008 end; |
AW: Datum letzter Samstag?
Delphi-Quellcode:
result := Date - DayOfWeek(Date);
|
AW: Datum letzter Samstag?
Zitat:
wtf? |
AW: Datum letzter Samstag?
Das nenne ich mal Hardcore :thumb: 8-)
Mein Stil wäre das hier gewesen:
Delphi-Quellcode:
Mit dem TDateTimeHelper von
var
wantedMonth: TDateTime; dayIterator: TDateTime; begin wantedMonth := Now(); // Der aktuelle Monat dayIterator := wantedMonth.EndOfMonth(); // Letzter Tag von wantedMonth while dayIterator.DayOfWeek <> DaySaturday do dayIterator := dayIterator.AddDays(-1); WriteLn( 'Der letzte Samstag des Monats von ' +currentMonth.ToString().QuotedString() +' ist ' +dayIterator.ToString().QuotedString() ); ReadLn; end. ![]() |
AW: Datum letzter Samstag?
Zitat:
|
AW: Datum letzter Samstag?
Delphi-Quellcode:
Das kann man auch mathematisch lösen.
while dayIterator.DayOfWeek <> DaySaturday do
dayIterator := dayIterator.AddDays(-1); ![]() ![]() Und nun braucht man nur noch die nötige Differenz zum gewünschten Samstag berechnen, also anhand dessen Wert für DayOfWeek/DayOfTheWeek. Ergibt dann (glaub ich)
Delphi-Quellcode:
, bzw. gekürzt das bereits erwähnte
Result := Date - (DayOfWeek(Date) + 0{DayOfWeek für Samstag} + DaysOfWeek) mod DaysOfWeek;
Delphi-Quellcode:
.
Result := Date - DayOfWeek(Date);
|
AW: Datum letzter Samstag?
Ich find meine Lösung am besten.. Ist ein "Einzeiler" (keine Schleife notwendig) :P
|
AW: Datum letzter Samstag?
Delphi-Quellcode:
liefert den 18.07.2014...
function LastSaturday(const AVAlue: TDateTime): TDateTime;
asm add esp,-$14 push dword ptr [ebp+$0c] push dword ptr [ebp+$08] call [B]DayOfWeek[/B] //DayOfTheWeek gibts nicht movzx eax,ax inc eax neg eax mov [ebp-$14],eax fild dword ptr [ebp-$14] fadd qword ptr [ebp+$08] fstp qword ptr [ebp-$10] wait mov eax,[ebp-$10] mov [ebp-$08],eax mov eax,[ebp-$0c] mov [ebp-$04],eax fld qword ptr [ebp-$08] mov esp,ebp pop ebp ret $0008 end; procedure TForm7.FormCreate(Sender: TObject); begin ShowMessage(DateToStr(LastSaturday(Date))); end;
Delphi-Quellcode:
liefert den 19.07.2014...
ShowMessage(DateToStr(Date-DayOfWeek(Date)));
Jetzt kann sich jeder überlegen was stimmt ;-) |
AW: Datum letzter Samstag?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:51 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz