我正在使用OpenNETCF智能设备框架开发Windows Mobile 6.1应用程序,我正在尝试使用SetTimeZoneInformation
调用从我的应用程序更新Windows Mobile设备的时区。
我试图将其设置为GMT-5东部时区(纽约时区,遵守夏令时),但系统选择为GMT-5波哥大,利马(不遵守夏令时)。
为了确认我是否设置正确,在设置时区之后,我调用GetTimeZoneInformation
来查看我之前设置的时区是否匹配,并且确实匹配。所以,我不知道这个设置是怎么在内部搞砸的。
我在这里发现了一个类似的问题,但是没有简明的答案,而且有一个参考链接已经死了。
下面是我使用的一些代码:
var tzc = new TimeZoneCollection();
tzc.Initialize();
var currentTz = new TimeZoneInformation();
DateTimeHelper.GetTimeZoneInformation(ref currentTz);
var tziList = tzc.Cast<TimeZoneInformation>().ToList();
var configTzi = tziList.FirstOrDefault(i => i.StandardName == "Eastern Standard Time");
if (configTzi != null)
if (currentTz.StandardName != configTzi.StandardName)
DateTimeHelper.SetTimeZoneInformation(configTzi);
您的代码应该工作得很好,但是您说纽约时区遵守夏令时,所以您可能想要启用自动夏令时,我可以通过在注册表中设置一个键来设置该代码:
const string key = @"HKEY_LOCAL_MACHINESoftwareMicrosoftClock";
Registry.SetValue(key, "AutoDST", 1);
希望这对你有帮助,致以最美好的问候
迪迪尔。