Platforms to show: All Mac Windows Linux Cross-Platform
FAQ.How to get the current timezone?
Function GMTOffsetInMinutes() as Integer // Returns the offset of the current time to GMT in minutes. // supports Mac OS and Windows, but not Linux yet (let me know if // you have code for that, please) // // Note that the offset is not always an even multiple of 60, but // there are also half hour offsets, even one 5:45h offset // This version by Thomas Tempelmann (rb@tempel.org) on 25 Nov 2005 // with a fix that should also make it work with future Intel Mac targets. // // Using code from various authors found on the RB NUG mailing list dim result, bias, dayLightbias as Integer dim info as memoryBlock dim offset as Integer #if targetMacOS then Declare Sub ReadLocation lib "Carbon" (location As ptr) info = NewMemoryBlock(12) ReadLocation info if false then // bad, because it does not work on Intel Macs: 'offset = info.short(9) * 256 + info.byte(11) else offset = BitwiseAnd (info.long(8), &hFFFFFF) end offset = info.short(9) * 256 + info.byte(11) offset = offset \ 60 return offset #endif #if targetWin32 then Declare Function GetTimeZoneInformation Lib "Kernel32" ( tzInfoPointer as Ptr ) as Integer // returns one of // TIME_ZONE_ID_UNKNOWN 0 // -- Note: e.g. New Delhi (GMT+5:30) and Newfoundland (-3:30) return this value 0 // TIME_ZONE_ID_STANDARD 1 // TIME_ZONE_ID_DAYLIGHT 2 info = new MemoryBlock(172) result = GetTimeZoneInformation(info) bias = info.Long(0) // note: the original code I found in the NUG archives used Long(84) and switched to Long(0) // only for result=1 and result=2, but my tests found that Long(0) is also the right value for result=0 if result = 2 then daylightBias = info.long(168) end if offset = - (bias + dayLightbias) return offset #endif End Function