AGB  ·  Datenschutz  ·  Impressum  







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

Datum letzter Samstag?

Ein Thema von AlexII · begonnen am 23. Jul 2014 · letzter Beitrag vom 24. Jul 2014
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

AW: Datum letzter Samstag?

  Alt 24. Jul 2014, 06:36
@Zoot

Gut gemerkt.

So wäre es richtig(er), da es sich auf ein dokumentiertes zugesichertes Verhalten verlässt, wo die zurückgelieferten Werte selber egal sind. Delphi-Referenz durchsuchenSystem.DateUtils.DayOfTheWeek

Egal welcher Wert für Samstag zurückgegeben wird, dieser Wert ist gleich dem Wert der Konstanten DaySaturday .

Delphi-Quellcode:
uses DateUtils;

Function LastSaturday(Date : TDateTime) : TDateTime;
Begin
  Result := Date - 1;
  While DayOfTheWeek(Result) <> DaySaturday do Result := Result - 1;
End;
Ich halte es aber für sehr unwahrscheinlich, dass sich die eine oder andere Funktion ändern wird
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (24. Jul 2014 um 06:49 Uhr)
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#2

AW: Datum letzter Samstag?

  Alt 24. Jul 2014, 09:07
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.

Prust.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: Datum letzter Samstag?

  Alt 23. Jul 2014, 13:43
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;

wtf?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Der schöne Günther
Online

Registriert seit: 6. Mär 2013
6.197 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Datum letzter Samstag?

  Alt 23. Jul 2014, 13:49
Das nenne ich mal Hardcore


Mein Stil wäre das hier gewesen:

Delphi-Quellcode:
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.
Mit dem TDateTimeHelper von
https://github.com/colinj/TDateTimeH...TimeHelper.pas
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 08:03 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-2025 by Thomas Breitkreuz