2014-11-13 2 views
1

이 코드 실행하면 :시간대와 SimpleDateFormat의 이상한 행동

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

날짜입니다 :이 코드를 실행하면 대신 Sat Feb 08 01:00:00 CEST 1941

:

String data = "08/02/1941"; 
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

전쟁 시간을 사용하고 있습니다 -

Daylight Saving Time (일광 절약 시간) 베를린에서 observed all year long in 1941했다 시간대를 쉬프트. 이 부분에 따르면 "히틀러 시간"으로 알려짐 history of DST in Europe.

전쟁 중 및 이후의 유럽 시간대는 shifted around dramatically입니다. 예를 들어 this post (그리니치 왕립 천문대)는 "Double"DST를 포함하여 이러한 교대 중 일부를 설명합니다. 이러한 변화는 역사에서 중요한 역할을하는 시간대의 흥미로운 사례입니다. At least one academic은 이러한 현상에 대해 "연대 측정학 (chronopolitics)"이라는 용어를 사용합니다.

+0

많은 답변을 사용하는 것과 같은 요약 제목 만 포함하고 있지 않습니다. 시간대가 역사에서 중요한 역할을 한 흥미로운 사례입니다. 이 순간 나는 역사를 읽으십시오. –

+1

+1 정치적 정확성이 실패한 역사적 정확함. – Hannes

+0

더 많은 역사를 읽은 후, 1941 년 연중 DST가 히틀러의 일회성 이벤트가 아니라는 사실이 밝혀졌습니다. 오히려 모든 종류의 미친 표준 시간대 변경은 전쟁의 일부 였고 심지어 전후 기간이었습니다. 그래서 더 큰 그림을 강조하기 위해 표제를 변경했습니다. 그리고 "전쟁 시간"의 말장난을하십시오. –