[API: Win/Linux/OsX] UTC auslesen, Korrektur unter Windows?
Verfasst: 06.06.2011 13:09
Ich benötige für ENM eine Funktion um die UTC - Zeit Crossplatform unter Windows, Linux und OS X auszulesen. Unter Windows und Linux habe ich das ganze schon zum laufen gebracht, für OS X fehlt mir jeder Ansatz. Was mich stutzig macht ist das ich beim ermitteln der Zeit mit der Windows - API einen Korrekturfaktor von 60 Minuten einrechnen muss obwohl davon nichts im MSDN steht, unter Linux jedoch nicht. Das ganze habe ich auch schon auf mehreren Rechnern getestet. Wird die Zeit bei euch korrekt angezeigt, bzw. hat jemand einen Ansatz für OS X?
Gruß, Alex
Code: Alles auswählen
CompilerIf Defined(timezone, #PB_Structure) = #False
Structure timezone
tz_minuteswest.l
tz_dsttime.l
EndStructure
CompilerEndIf
; UTC - Zeit ermitteln
Procedure UTCTime()
CompilerSelect #PB_Compiler_OS
CompilerCase #PB_OS_Windows
Protected UtcOs.TIME_ZONE_INFORMATION
GetTimeZoneInformation_(@UtcOs)
ProcedureReturn Date() + (UtcOs\Bias-60)*60
CompilerCase #PB_OS_Linux
Protected tv.q, tz.timezone
gettimeofday_(@tv, @tz)
ProcedureReturn Date() + tz\tz_minuteswest*60
CompilerCase #PB_OS_MacOS
CompilerEndSelect
EndProcedure
MessageRequester("", "ST: " + FormatDate("%hh:%ii:%ss", Date()) + Chr(13) + "UTC: "+FormatDate("%hh:%ii:%ss", UTCTime()))