GetTimeZoneInformation
Aus API-Wiki
Version vom 17. Juli 2008, 12:18 Uhr von Klaus Langbein (Diskussion | Beiträge)
Gibt in der Struktur TIME_ZONE_INFORMATION die aktuelle Zeitzoneninformation zurück.
Private Declare Function GetTimeZoneInformation Lib "kernel32" ( _
lpTimeZoneInformation As TIME_ZONE_INFORMATION) As Long
Beispiel
Private Declare Function GetTimeZoneInformation Lib "kernel32" ( _
lpTimeZoneInformation As TIME_ZONE_INFORMATION) As Long
Private Type SYSTEMTIME
wYear As Integer wMonth As Integer wDayOfWeek As Integer wDay As Integer wHour As Integer wMinute As Integer wSecond As Integer wMilliseconds As Integer
End Type
Private Type TIME_ZONE_INFORMATION
Bias As Long StandardName(63) As Byte StandardDate As SYSTEMTIME StandardBias As Long DaylightName(63) As Byte DaylightDate As SYSTEMTIME DaylightBias As Long
End Type
Option Explicit
Private Sub Command1_Click()
Dim yy As Long Dim mm As Long Dim dd As Long Dim hh As Long Dim nn As Long Dim ss As Long Dim T As String Dim D As String Dim Sd As Date Dim Tdiff1 As Long Dim Tdiff2 As Long Dim Summertime As Boolean Dim Bias As Long Dim utcHour As Long Dim StartSummer As Date Dim StartWinter As Date Dim tzi As TIME_ZONE_INFORMATION Call GetTimeZoneInformation(tzi)
yy = Year(Now) mm = tzi.DaylightDate.wMonth dd = tzi.DaylightDate.wDay hh = tzi.DaylightDate.wHour nn = 0 ss = 0 T = TimeSerial(hh, nn, ss) D = DateSerial(yy, mm, dd) StartSummer = CVDate(D & " " & T) ' Anfang der Sommerzeit Debug.Print "Start summer time: " & StartSummer ' Achtung das Datum ist nicht korrekt, ' Da Sommerzeit immer am Wochenende das auf ' dieses Datum folgt, umgestellt wird. Tdiff1 = DateDiff("s", StartSummer, Now) mm = tzi.StandardDate.wMonth dd = tzi.StandardDate.wDay hh = tzi.StandardDate.wHour nn = 0 ss = 0 T = TimeSerial(hh, nn, ss) D = DateSerial(yy, mm, dd) StartWinter = CVDate(D & " " & T) ' Anfang der Winterzeit Debug.Print "Start winter time: " & StartWinter Tdiff2 = DateDiff("s", StartWinter, Now) If Tdiff1 >= 0 And Tdiff2 < 0 Then Summertime = True End If Bias = tzi.Bias If Summertime = True Then Bias = Bias + tzi.DaylightBias End If Bias = Bias / 60
utcHour = Hour(Now) + Bias
Debug.Print "Local Time: " & Now Debug.Print "UTC: " & DateAdd("h", Bias, Now)
End Sub