Seite 1 von 1
WIN32_FIND_DATA() gibt UTC Zeit
Verfasst: Mi, 05. Nov 2014 17:12
von AUGE_OHR
hi,
weil es doch mal den BUG mit Directory() > 4 GB gab hatte ich auf die Windows API mit WIN32_FIND_DATA() umgestellt.
nun stelle ich fest das die Uhrzeit von der FILETIME Struktur nach UTC, also -1 Std, angezeigt wird.
wir haben doch jetzt Winterzeit, also "original" und wir liegen in der Zeitzone GMT +1 ...
Frage : "was" muss ich "wie" umrechnen ?
p.s. funktioniert Directory() in der v2.x Release mit > 4 GB und "richtiger" Uhrzeit ?
( PDR 6377 soll in der 2.00.430 geschlossen sein )
Re: WIN32_FIND_DATA() gibt UTC Zeit
Verfasst: Mi, 05. Nov 2014 22:44
von Werner_Bayern
yep!
Re: WIN32_FIND_DATA() gibt UTC Zeit
Verfasst: Do, 06. Nov 2014 8:26
von AUGE_OHR
Werner_Bayern hat geschrieben:yep!
ok, Danke.
so nun, weil mir ja 1 Std "fehlte", das Gegenteil wenn man "SetFileTime" verwendet wird 1 Std. "zu viel" angezeigt
- T32.ZIP
- wie TOUCH
setzt Datei auf aktuelles Datum/Zeit - (1.34 KiB) 244-mal heruntergeladen
das kann also dann doch nichts mehr mit "Daylight saving" zu tun haben, oder ?
In meiner TimeZone Applikation habe ja eine GMT -> LocalTime Konvertierung.
Code: Alles auswählen
SystemTimeToTzSpecificLocalTime( ::aTimeZone[ nCity ] [ I_DREI ], oSt, oLt )
ich kann mir aber irgendwie nicht vorstellen das man FileTime() "so" anpassen soll/muss das man die lokale Zeitzone berücksichtigen muss.
Frage : wie ist es bei Emails, Webseiten oder FTP aus. wird da GMT oder UTC verwendet ?
Re: WIN32_FIND_DATA() gibt UTC Zeit
Verfasst: Fr, 07. Nov 2014 20:08
von AUGE_OHR
hi,
ich habe mir nun mein TimeZone Modul genommen und wollte damit meine +- 1 Std. korrigieren.
dazu wir nun zuerst unter
Code: Alles auswählen
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation
der "StandardName" ermittelt. damit kann man dann unter
Code: Alles auswählen
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones
nach dem entsprechenden Eintrag suchen.
jetzt müsste man mit der "TIME_ZONE_INFORMATION" Stuctur TZI verarbeiten ...
nun habe ich mich gefragt ob das alles notwendig ist ...
Code: Alles auswählen
FUNCTION UTC2Local( cTIME )
LOCAL cRet := "00:00:00"
LOCAL nSec := HMS2Sec( cTIME ) // -> Sekunden
LOCAL cLoc := LocalTime() // 07.11.14 05:20:46:98
LOCAL cSys := SystemTime() // 07.11.14 04:20:46:98
LOCAL nLoc := HMS2Sec(SUBSTR(cLoc,10,8))
LOCAL nSys := HMS2Sec(SUBSTR(cSys,10,8))
//
// bislang nur bei gleichem Tag
//
IF SUBSTR(cLoc,1,8) = SUBSTR(cSys,1,8)
cRet := SEC2HMS(nSec-(nLoc-nSys))
ENDIF
RETURN cRet
wenn ich von der "LocalTime" die "SystemTime" abziehe komme ich doch genau auf die GMT Differenz, oder ?
p.s. Sommerzeit hab ich damit noch nicht ausprobiert ...