在Windows7机器上java.util.Date是GMT,但Windows时钟应用程序显示正确的本地时间

时间:2013-05-16 15:17:45

标签: java windows-7 timezone

我有一个Java应用程序,显示各种日期,所有日期都在本地时区。它在Windows 7上的测试中一直运行正常。现在它已经转移到生产到Windows 7机器,其中Clock显示正确的本地时间,但与java.util.Date,java.util.TimeZone等的所有交互告诉我Java认为它的当地时区是GMT。

甚至更奇怪的是,基于其他地方读取的一些信息,我比较了机器上的HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ TimeZoneInformation键的注册表设置以及没有出现问题的机器他们是一样的吗?

可能导致这种情况发生的原因是什么?我从来没有见过这样的东西。是否有一些我不知道的Windows 7或Java设置?

1 个答案:

答案 0 :(得分:0)

此计算机是否可能在Java控制面板或应用程序启动时的其他位置显式设置了user.timezone参数? see here

您可以尝试的另一件事(根据用户在this article的评论中)是:

  • 停止您的应用程序和任何其他Java应用程序。
  • 将Windows中的时区更改为其他内容(单击“应用”)。
  • 将其更改回正确的时区。
  • 重新启动您的申请。

不确定这是否仍然适用,因为该文章是关于Windows XP的,但这肯定会在注册表中重新创建所有必要的时区密钥 - 以防其中一个未正确设置。

另外,请确保该计算机具有Java的更新版本。

除此之外,我不确定它是什么。