时区更新程序不起作用

时间:2014-10-27 07:22:21

标签: java timezone

10月26日新时区设定(-1小时)。所以我在24日运行了这个命令:

java -jar tzupdater.jar --update

现在(10:19)时间不适用于新时区:

 public static void main(String[] args) {
        Date d = new Date();
        System.out.println(d);

    }

输出:

  

星期一10月27日11:19:35 MSK 2014

我试图再次运行该命令:

  

您拥有与嵌入式版本相同的版本

版本是:

  

tzupdater版本1.4.8-b01 JRE时区数据版本:tzdata2014h   嵌入式时区数据版本:tzdata2014h

出了什么问题?

2 个答案:

答案 0 :(得分:1)

您似乎无法理解时区是什么,以及此命令的作用。

时区不是小时偏移量。 TimeZone就像"欧洲/巴黎"。 TimeZone封装了偏移量以及控制偏移量变化的规则。例如,如果您使用时区"欧洲/巴黎",则您将在夏季时间为UTC + 2,冬季时间为UTC + 1。 TimeZone了解规则,知道从夏天到冬天的时间。

由于这些规则经常更改,您可以通过执行的命令更新它们。因此,该命令不会将UTC + 2的偏移量更改为UTC + 1。它只是更新您的Java安装,因此会考虑自上次更新以来引入的新规则。

答案 1 :(得分:0)

您必须确定您希望更新哪个jre。它可能不止一个主机上的jre。在我的Windows中,我至少有两个jre-s:in / Program Files / jdk / jre和/ Program Files / jre文件夹。 您必须检查所有jre / lib文件夹。应更新文件夹jre_home / lib / zi(注意文件夹时间)。 我不知道updater如何选择jre_home,但我知道它并不总是更新你期望的jre-s。 在Windows中,您似乎可以将更新的zi文件夹放到jre_home / lib中,但在Unix中我不确定。