Time Zone

alfcen

Well-Known Member
Licensed User
Hello
The hardware.dll could eventually be enabled to retrieve the Time Zone Information :)
Thanks
Robert
 

alfcen

Well-Known Member
Licensed User
That's very kind of you speeci48. Unfortunatelty, I am not in to C and therefore quite helpless at seeing this page :sign0013:
 

specci48

Well-Known Member
Licensed User
:signOops:
I only had a quick look at that page and thought it would describe the registry entry where the time zone is stored on mobile devices...
 

alfcen

Well-Known Member
Licensed User
No problem at all, specci48, I know where to find it in the registry, but the data is coded in binary which is alien to me :) at least for now.
Cheers
Robert
 

alfcen

Well-Known Member
Licensed User
here you go...

HKEY_LOCAL_MACHINE\Time\TimeZoneInformation

The value is stored in minutes to account for 'exotic' time zones and is further negative for eastern zones.

I think the TZ can be extracted with the binary.dll with a few lines of code.

I did that before in embVB like this :

homezone = StringToLong(ReadReg(HKEY_LOCAL_MACHINE, "\Time", "TimeZoneInformation")) / 60 * -1

Private Function StringToLong(strValue As String) As Long
Dim strTemp As String
Dim intByte As Long
On Error Resume Next
For intByte = 4 To 1 Step -1
strTemp = strTemp & Hex(AscB(MidB(strValue, intByte, 1)))
Next intByte
StringToLong = CLng("&H" & strTemp)
End Function
 

alfcen

Well-Known Member
Licensed User
:sign0013: and on the desktop...

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation
 

alfcen

Well-Known Member
Licensed User
Hi again
Here are the routines.
Tested with PPC2003SE, not tested under WM5.x/6.x.
Tested on desktop with XP Home Edition.
Perhaps there is a more elegant solution involving less code.
Please use or abuse :)


Sub App_Start
Reg.New1 'registry.dll
Bit.New1 'bitwise.dll
End Sub

Sub Globals
Dim zti(0) As Byte 'Array for binary data (PPC), registry entry is binary
End Sub

Sub GetTimeZone
Dim m, i
Reg.RootKey(Reg.rtLocalMachine)
If CPPC = True Then
zti()=Reg.GetValue("Time","TimeZoneInformation")
For i = 3 To 0 Step -1
m = m & bit.DecToHex(zti(i))
Next
Return bit.HexToDec(m) / 60 * (-1)
Else
m = Reg.GetValue("System\CurrentControlSet\Control\TimeZoneInformation","ActiveTimeBias")
Return m / 60 * (-1)
End If
End Sub

Sub GetDayLightSavingHour
'for the desktop only
Return Reg.GetValue("System\CurrentControlSet\Control\TimeZoneInformation","StandardBias")
End Sub
 
Top