WIN32_FIND_DATA() gibt UTC Zeit

Fragen rund um diverse Windows-Versionen, ihr Verhalten unter Xbase++ und den Umgang mit der API

Moderator: Moderatoren

Antworten
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

WIN32_FIND_DATA() gibt UTC Zeit

Beitrag 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 )
gruss by OHR
Jimmy
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: WIN32_FIND_DATA() gibt UTC Zeit

Beitrag von Werner_Bayern »

yep!
Dateianhänge
Aufzeichnen2.PNG
Aufzeichnen2.PNG (2.25 KiB) 3773 mal betrachtet
Aufzeichnen.PNG
Aufzeichnen.PNG (6.94 KiB) 3773 mal betrachtet
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: WIN32_FIND_DATA() gibt UTC Zeit

Beitrag 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 :shock:
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 ?
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: WIN32_FIND_DATA() gibt UTC Zeit

Beitrag 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 ...
gruss by OHR
Jimmy
Antworten