【发布时间】:2023-03-24 19:17:01
【问题描述】:
在 Windows XP 机器上使用 Java 6 更新 30。更新 Java 或 Windows 不是一种选择。
我需要一种方法将内部 Java 时钟改回一小时以匹配系统时间。机器在俄罗斯,Windows 系统时间正确,但 Java 时间差一小时,可能是由于 DST。
我尝试了changing JVM parameters 以及修改deployment.properties 文件(更改时区),在环境/系统变量路径中添加变量也不起作用,并尝试了Oracle 提供的timezone updater tool。前三个不更改任何参数,更新工具崩溃,并显示“找不到 JRE/JDK 文件”。
有没有其他方法可以永久/正确更改 Java 使用的时间。
示例: 当前时间:晚上 7:20:17 时区:sun.util.calendar.ZoneInfo [id="Europe/Moscow", offset=14400000, dstSavings=0, useDaylight=false, transitions=78, LastRule=null]
所需时间:下午 6:20:17 时区:sun.util.calendar.ZoneInfo [id="Europe/Moscow", offset=14400000, dstSavings=0, useDaylight=false, transitions=78, LastRule=null]
【问题讨论】:
-
在您的“当前”和“必需”示例中,
TimeZone对象没有任何区别。如果问题出在时区,应该会有一些差异。 -
您是对的,因为去年俄罗斯时间发生了变化,您需要更新您的时区文件。所以你需要弄清楚你使用 tzupdater 有什么问题。你究竟是如何运行它的,结果如何?
-
当我运行 tzupdater 工具时,我得到的唯一输出是找不到 JRE/JDK 文件。
-
iana.org/time-zones/repository/releases/tzcode2014f.tar.gz 该工具似乎只适用于 linux 机器,因为它必须使用 make。
-
Java 使用 tzdata 但不使用 tzcode。它使用自己的时区信息格式,因此需要 tzupdater 等工具。