c# - 更改 TimeZone 不会反射(reflect) .NET Compact Framework 中时间的更改

标签 c# .net compact-framework windows-ce

我正在开发 .Net Compact Frmework(CF) 应用程序。我这个应用程序的要求是我应该能够更改时区。但是,当我更改 TimeZone 时,当前时间并没有更改为那个特定的 TimeZone。从网络上,我了解到 DateTime.Now 在这种情况下无法工作。

我正在使用以下 Win API:

  1. SetTimeZoneInformation(...) - 在运行时设置时区。
  2. 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/

相关文章:

c# - 使用 System.Diagnostics.Process.Start 运行程序会导致 MissingMethodException

c# - serialport.Write() - 如何正确格式化字节

c# - 如何使用 LINQ TakeWhile 和加入列表

c# - 启动一个任务并稍后多次等待

.net - ASP.NET UserControl 不初始化子控件

.net - 按钮不呈现为 XP 样式

c# - 上传时网络客户端超时

c# - 2D 纹理到前面

c# - 任何人都知道 xmlReader/xmlWriter 只提供 Create 方法而不是构造函数的原因

c# - .NET Compact 框架中的异步 TCP 服务器