我有一个 Java 应用程序,可以显示各种日期,所有日期都在本地时区。它在 Windows 7 上的测试中始终正常工作。现在它已转移到 Windows 7 机器上的生产环境,其中时钟显示正确的本地时间,但与 java.util.Date、java.util.TimeZone 等的所有交互.告诉我Java认为它的本地时区是GMT。
更奇怪的是,根据在其他地方读取的一些信息,我比较了出现问题的计算机和未出现问题的计算机上的 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation 键的注册表设置,并发现它们是相同的吗?
什么可能导致这种情况发生?我从来没有见过这样的事情。是否有一些我不知道的 Windows 7 或 Java 设置?
最佳答案
这台计算机是否可能在 Java 控制面板或应用程序启动时的其他位置显式设置了 user.timezone
参数? see here
您可以尝试的另一件事(根据 this article 评论中的用户所说)是:
- 停止您的应用程序和任何其他 Java 应用程序。
- 将 Windows 中的时区更改为其他时区(单击“应用”)。
- 将其改回正确的时区。
- 重新启动您的应用程序。
不确定这是否仍然适用,因为那篇文章是关于 Windows XP 的,但这肯定会在注册表中重新创建所有必要的时区键 - 以防万一其中一个键设置不正确。
此外,请确保计算机具有更新版本的 Java。
除此之外,我不确定它可能是什么。
关于java - 在 Windows7 机器上 java.util.Date 为 GMT,但 Windows 时钟应用程序显示正确的本地时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16591347/