我正在开发 .Net Compact Frmework(CF) 应用程序。我这个应用程序的要求是我应该能够更改时区。但是,当我更改 TimeZone 时,当前时间并没有更改为那个特定的 TimeZone。从网络上,我了解到 DateTime.Now 在这种情况下无法工作。
我正在使用以下 Win API:
SetTimeZoneInformation(...)
- 在运行时设置时区。GetLocalTime(...)
- 获取本地时间 w.r.t 当前时间 区域。
谁能告诉我哪里出了问题?
最佳答案
以这种方式更改应用程序的时区不会更改本地时间:相反,它会更改系统时间以保持本地时间不变。这不是控制面板所做的,但如果你想模拟控制面板的功能,你需要做这样的事情:
- 保存系统时间
- 更改时区
- 恢复保存的系统时间
这样系统时间保持不变,本地时间根据所选时区发生变化。
顺便说一句,我们在我们的一个产品中使用 OpenNETCF 库 ( http://www.opennetcf.com ) 执行此操作,其中包括一个 DateTimeHelper
类(在许多其他有用的东西中 - 社区版是免费的). (这比编写自己的 pinvoke 来访问 SetTimeZoneInformation()
稍微简洁一点,功能是相同的。)
关于c# - 更改 TimeZone 不会反射(reflect) .NET Compact Framework 中时间的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7252606/