Einzelnen Beitrag anzeigen

Delphianer

Registriert seit: 19. Feb 2003
Ort: Rossau
149 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#20
  Alt 13. Mär 2003, 09:29
Hallo

Es gibt drei Funktionen, die mir auf Anhieb einfallen und für das Problem interessant sind:
date: liefert den aktuellen Tag (gerechnet ab 30.12.1899)
time: liefert die Zeit als Bruchteil eines Tages seit Mitternacht
now: liefert Tag und Zeit

beispiel
date: gibt auf meinem PC für heute 37693.0 zzurück
time: gibt für beispielsweise 9:00 den Wert 0.375 zurück
now: heutige Tag 9:00 liefert 37693.375

Die drei Funktionen liefern als Ergebnis TDateTime, was in Wirklichkeit Double ist, und zwar Tage vor dem Komma (bzw. Punkt) und Uhrzeit danach.

Wenn Du also
if now > StrToTime('09:15:00')
kodierst, vergleichst Du heutiges Datum/Uhrzeit mit 9:15 30.12.1899, und das ist ziemlich lange vorbei.
timetostr und strtotime finde ich in dem Zusammenhang auch nicht so gut, da daß davon abhängt, wie Delphi Deinen String interpretiert, und daß ist vom System abhängig.

Lösungvorschlag:
Zeit in double umrechen 9:15 entspricht ((9 * 60) + 15) / 1440
und mit time vergleichen

Viele Grüße
Lutz
  Mit Zitat antworten Zitat