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

标签 java windows-7 timezone

我有一个 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/

相关文章:

javascript - 消除Javascript夏令时差距,跨浏览器解决方案

android - 如何处理 JodaTime 和 Android 的时区数据库差异?

node.js - 我无法在 Windows 7 上安装 node.js

svn - Windows 7(带有TortoiseSVN)中SVN的Windows资源管理器列(在详细信息 View 中)

Java TimeZone 和时区名称的快捷方式问题

java - 如何在下面的程序中加入错误消息?

windows-7 - 将命令行日志重定向到文件时出现 `pause` 命令问题

java - JSP 单选按钮未正确选择

java - 停止正在读取 MQ 的 nohup Java 进程

java - JSTL-fmt :message and fmt:param toLowerCase