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 4 von 5   « Erste     234 5      
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.008 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#31

AW: Datum letzter Samstag?

  Alt 24. Jul 2014, 08:43
dass so eine süße kleine Frage so viel Grundlage bietet, dass ich hier 29 Beiträge dazu lesen durfte.
Sommerloch
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#32

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
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#33

AW: Datum letzter Samstag?

  Alt 24. Jul 2014, 09:46
Wow... das ist ja fast wie die Relativitätstheorie.

Und letzter Sonntag wäre dann?
 result := Date - DayOfWeek(Date) + 1;
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

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

AW: Datum letzter Samstag?

  Alt 24. Jul 2014, 09:48
Wow... das ist ja fast wie die Relativitätstheorie.

Und letzter Sonntag wäre dann?
 result := Date - DayOfWeek(Date) + 1;
Nur, wenn der aktuelle Tag kein Sonntag ist
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)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

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

AW: Datum letzter Samstag?

  Alt 24. Jul 2014, 09:58
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;
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)
  Mit Zitat antworten Zitat
Zoot

Registriert seit: 30. Jan 2006
Ort: Hessen
110 Beiträge
 
Delphi 11 Alexandria
 
#36

AW: Datum letzter Samstag?

  Alt 24. Jul 2014, 10:47
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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.136 Beiträge
 
Delphi 12 Athens
 
#37

AW: Datum letzter Samstag?

  Alt 24. Jul 2014, 10:53
  call [B]DayOfWeek[/B] //DayOfTheWeek gibts nicht
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.

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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (24. Jul 2014 um 12:03 Uhr)
  Mit Zitat antworten Zitat
Der schöne Günther

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

AW: Datum letzter Samstag?

  Alt 24. Jul 2014, 11:05
Möchte jemand die Behandlung jetzt noch auf verschiedene Zeitzonen erweitern?
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#39

AW: Datum letzter Samstag?

  Alt 24. Jul 2014, 12:08
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!
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#40

AW: Datum letzter Samstag?

  Alt 24. Jul 2014, 12:12
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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 5   « Erste     234 5      


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 19:12 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