Einzelnen Beitrag anzeigen

MicMic

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

AW: Datum/Zeitwerte vergleichen

  Alt 13. Sep 2018, 14:49
Ihr bringt mich ganz durcheinander

Also ich hole mir die Datums/Zeit Werte von TWIN32FindDataW und TWin32FindData.
Das ist ja dann _FILETIME 64 Bit. Wusste nicht, dass es ein altes DOS FILETIME gibt.

Bei den normalen Vergleichs-Funktionen ist mir nicht klar, was die genau machen wenn man nur nach Datum sucht (nicht nach Uhrzeit) oder nur nach Uhrzeit (nicht nach Datum). Deshalb dachte ich, meine Datumswerte speichere ich in String und wandle dies in YYYYMMDD (nur für ein Datum) um. Dann in eine Zahl konvertieren und dann ganz normal vergleichen (Wert1 < Wert2).

Aber was nun?

Ich hab jedenfalls ne Funktion (irgendwo aus dem Netz kopiert).
Code:
function FileTimeToDateTime(FileTime: TFileTime): TDateTime;
var
  ModifiedTime: TFileTime;
  SystemTime: TSystemTime;
begin
  Result := 0;
  if (FileTime.dwLowDateTime = 0) and (FileTime.dwHighDateTime = 0) then
    Exit;
  try
    FileTimeToLocalFileTime(FileTime, ModifiedTime);
    FileTimeToSystemTime(ModifiedTime, SystemTime);
    Result := SystemTimeToDateTime(SystemTime);
  except
    Result := Now; // Something to return in case of error
  end;
end;
Damit kann ich ja meine FILETIME ins Delphi TDateTime konvertieren. Wobei man übers "Result := Now;" sich noch mal Gedanken machen sollte. So ein Fallback (ich glaub das nennt man so) ist ja nicht immer gewünscht.
Mit FormatDateTime kann ich mir dann nur das Datum oder auch nur die Uhrzeit rauskopieren. An die Millisekunden komme ich auch ran. Zurückgeliefert bekomme ich dann hier auch ein String. Aber das soll ich ja nicht machen. Wie dann?

Mit einem TDateTime kann ich ja auch "*24*60*60*1000" rechnen

Also als Beispiel:
Code:
 If (trunc(FileTimeToDateTime(Datum1...FindData.ftCreationTime)*24*60*60*1000) <
 trunc(FileTimeToDateTime(Datum2...FindData.ftCreationTime)*24*60*60*1000)) then ...
Das wäre jedenfalls ein Vergleich mit Datum+Uhrzeit. Mir ist nicht ganz klar, wie ich das nur für ein Datum oder nur für eine Uhrzeit angeben muss.

Gruß
Michael
  Mit Zitat antworten Zitat