从字符串解析日期返回错误的时间

时间:2013-02-05 16:12:32

标签: java

运行以下代码:

String s = "1914-07-20T00:00:00+0200";
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
System.out.println(df.parse( s ));

我得到了这个结果:

  

Sun Jul 19 23:34:52 EET 1914   (注意日期和时间)

1 个答案:

答案 0 :(得分:4)

这可能是为了让太阳在中午开始进行时间调整之一。随着世界变得越来越小,当地时区被更普遍的时区所取代,这些都发生在那个时代。 25分钟很可能是这样的调整。你必须看看从那时到现在的东欧时区调整记录。

检查这个的另一种方法是把它放在一个循环中并看到它在1924年和1934年正常工作,直到现在。在某些时候,如果进行这样的调整,它可能会开始工作,你可以将其缩小到特定的时间,在这个时间之后,所有时间都按预期工作,并且所有时间都没有。虽然,可以肯定的是,可能会有一系列的调整。在这里10分钟,在那里7分钟,加起来25分钟。

注意

此页面(http://www.prokerala.com/travel/timezones/EET?mode=history)显示GM01偏移量在1901年为1.64444,在1920年为2.这是39:52分秒。

此页面(http://home.tiscali.nl/~t876506/TZworld.html)与全球tz数据库有关,显示欧洲/雅典的LMT(本地平均时间)为1:34:52,理论上应为+2:00。我不太清楚它与它有什么关系,但看起来正如OP所看到的那样似乎是一个奇怪的巧合。 (我还发现joda-time在“官方”时区数据文件中第一次输入之前的任何日期使用LMT偏移量。