我试图:
我正在通过阅读registry中的“CurrentVersion \ Time Zones”部分来运行。
我可以使用GetTimeZoneInformation()获取当前时区,但名称与从registry的“CurrentVersion \ Time Zones”部分检索到的时区列表不匹配。 例如,太平洋时间在时区列表中显示为“(UTC-08:00)太平洋时间(美国和加拿大)”,但GetTimeZoneInformation()包含string“太平洋标准时间”和“太平洋夏令时”。 我需要find与“CurrentVersion \ Time Zones”名称对应的名称,以便我可以从列表中select它。
我可以从timeZoneInformation.Bias中检索UTC的偏移量,但这只适用于当前选定的时区。 我需要知道在registry中列出的任何区域(例如,“(UC-07:00)Mountain Time(美国和加拿大)”)的“偏见”,同时调整夏令时。
谢谢!
微软选择把你想要的字符串放在一个不同的区域,一些字符串是不重要的检索。 但是你的问题的一部分可以用你已经有的信息来回答。
在CurrentVersion \ Time Zones中 ,是的区域的名称。 在这个键里面是你想要的一些部分的值。
re: “(UTC-08:00)太平洋时间(美国和加拿大)”
这是在您有的区域名称下的注册表值“显示”。
资源DLL中有更多的字符串,由值“MUI_Display”,“MUI_Std”和“MUI_Dlt”指定。 它通常是像“@ tzres.dll,-220”
要获取这些字符串,您需要将该资源DLL加载到内存中,并以UNICODE字符串的形式获取这些特定的资源。
重新: 任何时区在几分钟内抵消。
同样在注册表项中(时区名称)是一个名为“TZI”的值。 这是一个二进制blob(根据MSDN)如下所示:
typedef struct _REG_TZI_FORMAT { LONG Bias; LONG StandardBias; LONG DaylightBias; SYSTEMTIME StandardDate; SYSTEMTIME DaylightDate; } REG_TZI_FORMAT;
在各种BIAS在几分钟内,使用公式UTC =本地+ theBias和theBias要么是偏见+ StandardBias或偏见+ DaylightBias取决于有问题的日期。 两个SYSTEMTIME值描述转换日期。
TimeZoneInfo.Bias
TIME_ZONE_INFORMATION结构 – http://msdn.microsoft.com/en-us/library/windows/desktop/ms725481(v=vs.85).aspx
SetTimeZoneInformation函数 – http://msdn.microsoft.com/en-us/library/windows/desktop/ms724944(v=vs.85).aspx
// Get the local system time. SYSTEMTIME LocalTime = { 0 }; GetSystemTime( &LocalTime ); // Get the timezone info. TIME_ZONE_INFORMATION TimeZoneInfo; GetTimeZoneInformation( &TimeZoneInfo ); // Convert local time to UTC. SYSTEMTIME GmtTime = { 0 }; TzSpecificLocalTimeToSystemTime( &TimeZoneInfo, &LocalTime, &GmtTime ); // GMT = LocalTime + TimeZoneInfo.Bias // TimeZoneInfo.Bias is the difference between local time // and GMT in minutes. // Local time expressed in terms of GMT bias. float TimeZoneDifference = -( float(TimeZoneInfo.Bias) / 60 ); CString csLocalTimeInGmt; csLocalTimeInGmt.Format( _T("%ld:%ld:%ld + %2.1f Hrs"), GmtTime.wHour, GmtTime.wMinute, GmtTime.wSecond, TimeZoneDifference );
TimeZoneInfo类 – http://msdn.microsoft.com/zh-cn/library/bb396389确定夏令时 – http://www.metatrader4.com/forum/2155