0

Windows 服务器有一个注册表项 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation,其中字段 ActiveTimeBias 将返回您正在运行的机器从 GMT 开始的偏移量(以分钟为单位)。

我们有一个 Web 应用程序,它需要在我们生成的 html 页面上向用户展示他们的当地时间。为此,我们让他们为其时区设置首选项,然后获取上述值,以便可以比较服务器时间和客户端时间并进行正确的计算。

在我们构建的服务器上,这非常有效。我们正在将我们的应用程序部署到 1 层云提供商中,该提供商提供我们配置和使用的 windows 服务器 ami。我们发现,当您在本地服务器上使用时钟控制面板时,TimeZoneInformation 的注册表项是正确的。当我们对这个虚拟机做同样的事情时,除了 ActiveTimeBias 之外,条目都是正确的。

微软告诫不要以惯常的方式欺骗​​个人价值。

社区的问题 - 有没有其他人遇到过这个问题,如果有,你是如何解决的?

4

1 回答 1

0

通常不会直接针对这些注册表项进行编程。例如,在 .Net 中,我们有TimeZoneInfo类。它使用相同的数据,但以对开发人员更友好的方式。

关于您的特定问题,ActiveTimeBias密钥保存您的服务器设置的时区与 UTC 的当前偏移量。如果您的服务器位于遵循夏令时规则的时区,那么这将每年更改两次。如果您手动更新您的时区并刷新注册表,您会看到它发生了变化。

我能提供的最好建议是,由于服务器的时区可能对任何人都不重要,因此您应该将其设置为 UTC。

另请参阅:夏令时和时区最佳实践

于 2013-05-10T20:40:12.420 回答