2014-11-13 30 views
1

如果我执行此代码:时区和SimpleDateFormat的奇怪行为

String data = "08/02/1941"; 
SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy"); 
Date date = dateFormat.parse(data); 

我在输出日期:Sat Feb 08 01:00:00 CEST 1941

,而是如果我执行此代码:

String data = "08/02/1971"; 
SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy"); 
Date date = dateFormat.parse(data); 

的日期:Sat Feb 08 01:00:00 CET 1971

为什么我有这种差异(CET和CEST)?

我的时区为欧洲/柏林(UTC + 1),我使用Java 1.7.0_67-b01

+0

您在两个输出中都报告了'1941'。 –

+0

谢谢,我更正了 –

回答

2

战争时间 - 换档时间区

夏令时在柏林observed all year long in 1941。有人称为“希特勒时间”根据这history of DST in Europe.

战争期间和之后的欧洲时区shifted around dramatically。例如,this post(据推测来自格林威治皇家天文台)描述了其中一些转变,包括“双重”DST。这些转变是时区在历史上发挥重要作用的有趣案例。 At least one academic使用术语“chronopolitics”来表示这种现象。

+0

没有成立,只是一个总结标题,就像我在很多答案中使用的一样。相关的,因为这是一个有趣的案例,时区在历史上扮演了一个角色。尝试阅读我在这一刻的历史。 –

+1

+1在历史正确性的情况下,政治正确性失败。 – Hannes

+0

在阅读更多历史后,发现1941年的全年夏令时并非希特勒的一次性事件。相反,各种疯狂的时区变化是战争的一部分,甚至是战后时期。所以,我改变了标题以强调更大的画面。并制定“战争时间”的双关语。 –