2012-07-17 2 views
0

"HH : mm"형식의 문자열에서 시간을 구문 분석하여 java.text.SimpleDateFormat으로 구문 분석합니다. 예를 10:30 또는 22:10를 들어SimpleDateFormat 잘못된 시간 구문 분석

SimpleDateFormat formatter = new SimpleDateFormat("HH:mm"); 
Date parsed = formatter.parse((String) value); 

포맷터 시간대 내 장치 (: 00 모스크바 시간대 04)에 대한 기본 시간대입니다. 구문 분석 후 10:30 및 인 시간 문자열은 10:30 01/01/1970이 moscow time zone에 있지만 09:30 01/01/1970이됩니다. 내가 뭘 잘못 했니? 왜 내가 이런 행동을하는거야?

+0

'날짜'는 매우 신뢰할 수 없습니다. [Calendar] (http://docs.oracle.com/javase/6/docs/api/java/util/Calendar.html) 또는 더 나은 [Joda Time] (http : //joda-time.sourceforge. net /) – Keppil

+0

@Keppil이 경우에는 맞지만 조다 타임 (Joda Time)이 더 나은 선택입니다. –

+0

@PeterLawrey : 네,이 특별한 경우에 대한 좋은 대답은 없었습니다. 그러나 OP가 앞으로의 많은 골치 아픈 일을 피하게 해주길 바란다고 생각했습니다. – Keppil

답변

3

1931 년에서 1981 년까지 모스크바는 UTC + 3이었습니다. http://www.timeanddate.com/worldclock/timezone.html?n=166&syear=1970

시간대는 종종 정치적인 이유로 시간이 지남에 따라 변경됩니다.

+0

그래,이 문제의 이유는 SimpleDateFormat 구현 안에 하드 코드인가? –

+0

IMHO, 문제가 없으므로 동작이 정확합니다. 참고 : 1930 년 이전에는 모스크바가 UTC + 2였습니다. 모든 해에'UTC + 4 '를 원한다면 이것을 타임 존으로 사용할 수 있습니다. –

+0

예, 행동이 정확합니다. 이해합니다. 고마워, stackoverflowers! –

관련 문제