Windows 注册表中格林威治标准时间 (GMT) 的时间偏移设置未更新

问题描述 投票:0回答:1

windows 服务器有一个注册表项 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation,其中 ActiveTimeBias 字段将返回您正在运行的计算机相对于 GMT 的分钟偏移量。

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

在我们构建的服务器上,这效果很好。我们正在将应用程序部署到一级云提供商,该提供商提供我们配置和使用的 Windows 服务器 ami。我们发现,当您在本地服务器上使用时钟控制面板时,TimeZoneInformation 的注册表项是正确的。当我们对此虚拟机执行相同操作时,除 ActiveTimeBias 之外的条目都是正确的。

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

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

windows-server-2008 timezone-offset registrykey
1个回答
0
投票

人们通常不会直接针对这些注册表项进行编程。例如,在 .Net 中,我们有

TimeZoneInfo
类。它使用相同的数据,但以一种对开发人员更加友好的方式。

关于您的特定问题,

ActiveTimeBias
键保存您的服务器设置的时区相对于UTC的当前偏移量。如果您的服务器所在的时区遵循夏令时规则,那么该时区每年会更改两次。如果您手动更新时区并刷新注册表,您将看到它发生变化。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.