![]() |
Timestap auslesen von einer datei funktioniert nicht
Hi DPler
Hab mal wieder ein Problem für euch :wink: Ich will den Timestap einer datei auslesen (aber nur den "Geändert am"). Dazu verwende ich folgende Funktion:
Delphi-Quellcode:
So diese Funktion funktioniert eigentlich ganz gut. Bis auf des das eine Stunde fehlt. D.h. das programm sagt 12:42:00 meine systemuhr aber 13:42:00
function GetFileLastModifiedTimeStap(const FileName: string) : TDateTime;
var FileHandle : THandle; DateInfo: TFileTime; SysTimeStruct: SYSTEMTIME; TimeZoneInfo: TTimeZoneInformation; Bias: Double; begin Result := 2; //01.01.1900 00:00:00 Bias := 0; FileHandle := FileOpen(FileName, fmOpenRead or fmShareDenyWrite); if FileHandle > 0 then begin try if GetTimeZoneInformation(TimeZoneInfo) <> $FFFFFFFF then Bias := TimeZoneInfo.Bias / 1440; // 60x24 GetFileTime(FileHandle, nil, nil, @DateInfo); if FileTimeToSystemTime(DateInfo, SysTimeStruct) then result := SystemTimeToDateTime(SysTimeStruct) - Bias; finally FileClose(FileHandle); end; end; end; natürlich könnte ich jetzt einfach eine stunde dazu zählen nur weiß ich nicht wie sich des auf anderen System (mit anderen Zeitzonen ...) auswirkt |
Re: Timestap auslesen von einer datei funktioniert nicht
Wofür steht denn dein $FFFFFFFF? (sehs gerade, TIME_ZONE_ID_INVALID...)
Als Rückgabewert für GetTimeZoneInformation kenn ich da noch TIME_ZONE_ID_DAYLIGHT, was für eine Stunde Versatz sprechen würde ;) Werte das Rückgabeergebnis mal genauer aus, dann klappts auch mit der Sommerzeit. |
Re: Timestap auslesen von einer datei funktioniert nicht
Zitat:
ah stimmt an der sommerzeit kann es liegen |
Re: Timestap auslesen von einer datei funktioniert nicht
Wie, wie machst Du das? :D
Jetzt nur mal grob auswendig umgewandelt:
Delphi-Quellcode:
Kann auch Dec statt Inc sein, bin zu faul jetzt nachzudenken, wierum Du da verschiebst ;)
cTZI := GetTimeZoneInformation(TimeZoneInfo);
if cTZI <> $FFFFFFFF then Bias := TimeZoneInfo.Bias / 1440; if cTZI = TIME_ZONE_ID_DAYLIGHT then Inc(Bias, 60); |
Re: Timestap auslesen von einer datei funktioniert nicht
k danke
super danke es funktioniert jetzt:
Delphi-Quellcode:
function GetFileLastModifiedTimeStap(const FileName: string) : TDateTime;
var FileHandle : THandle; DateInfo: TFileTime; SysTimeStruct: SYSTEMTIME; TimeZoneInfo: TTimeZoneInformation; Bias: Double; begin Result := 2; //01.01.1900 00:00:00 FileHandle := FileOpen(FileName, fmOpenRead or fmShareDenyWrite); if FileHandle > 0 then begin try if GetTimeZoneInformation(TimeZoneInfo) <> $FFFFFFFF then begin Bias := TimeZoneInfo.Bias / 1440; // 60x24 if GetTimeZoneInformation(TimeZoneInfo) = TIME_ZONE_ID_DAYLIGHT then Bias := Bias - (60 / 1440); GetFileTime(FileHandle, nil, nil, @DateInfo); if FileTimeToSystemTime(DateInfo, SysTimeStruct) then result := SystemTimeToDateTime(SysTimeStruct) - Bias; end; finally FileClose(FileHandle); end; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:18 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