Einzelnen Beitrag anzeigen

MicMic

Registriert seit: 26. Mai 2018
296 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#13

AW: Datum/Zeitwerte vergleichen

  Alt 13. Sep 2018, 18:22
Ich bin nun gerade dabei mit diesem TTime/TimeOf und TDate/DateOf

Da ich hier ja dann mit ...:
Code:
Var D1,D2 : TDate;

D1 := DateOf(FileTimeToDateTime(Datum1 aus FindData.ftCreationTime));
D2 := DateOf(FileTimeToDateTime(Datum2 aus FindData.ftCreationTime));

If D1 < D2 then ... // kleiner
else if D1 > D2 then ... // größer
else ... // gleich
... die Datumswerte vergleiche, habe ich mich gefragt ob ich dies auch so mit einem Datum+Uhrzeit machen kann. Ist ja alles Double. Gleich kam mir die Frage, wieso es dann überhaupt die Funktionen CompareDate/Time und CompareDateTime gibt. In der Hilfe unter "CompareDateTime" habe ich nun folgendes gelesen.
Zitat:
"Anmerkung: CompareDateTime unterscheidet sich vom direkten Vergleich der entsprechenden double-Genauigkeitswerte darin, dass die beiden TDateTime-Werte als gleich gelten, wenn sie bis zur Millisekunde demselben Zeitpunkt entsprechen. Es ist möglich, zwei TDateTime-Werte zu erstellen, die numerisch nicht identisch sind (als double-Werte), aber denselben Zeitpunkt repräsentieren (Jahr, Monat, Tag, Stunde, Minute, Sekunde und Millisekunde)."
Gleiches Datum+Uhrzeit aber unterschiedlicher double-Werte?
Na ich verstehe das mal jetzt gar nicht *lach
Ok, dann nimmt man für ein Vergleich zweiter Datum+Uhrzeit Werte dann die Funktion CompareDateTime.
Bin ja nicht abgeneigt auch Funktionen zu nutzen *lach

Soll ich dann lieber die obigen gespeicherten Werte in D1 und D2 dann lieber auch mit "CompareDate" vergleichen? Und das Ganze auch mit Time/TimeOf (hier dann CompareTime)?

Also mal zusammen:
Code:
 Var D1,D2 : TDate;
 Var T1,T2 : TTime;
 Var DT1,DT2 : TDateTime;
 D1 := DateOf(FileTimeToDateTime(Datum1 aus FindData.ftCreationTime));
 D2 := DateOf(FileTimeToDateTime(Datum2 aus FindData.ftCreationTime));
 T1 := TimeOf(FileTimeToDateTime(Datum1 aus FindData.ftCreationTime));
 T2 := TimeOf(FileTimeToDateTime(Datum2 aus FindData.ftCreationTime));
 DT1 := FileTimeToDateTime(Datum1 aus FindData.ftCreationTime);
 DT2 := FileTimeToDateTime(Datum2 aus FindData.ftCreationTime);
If D1<D2 usw. oder CompareDate(D1,D2) ?
If T1<T2 usw. oder CompareTime(T1,T2) ?
Wegen der Hilfe/Anmerkung bei DT1/DT2 lieber nur mit CompareDateTime(DT1,DT2) ?

Gruß
Michael
  Mit Zitat antworten Zitat