2013-07-11 7 views
3

내 자바 프로그램에서의 기이 한 현상은, 그냥 내 코드를 보면이 문장에 의해 출력이 "2013년 2월 22 일 3했다 내가 런타임에 내 자바 프로그램에서 이상한 현상을 발견

System.out.println(" date " + new Date(1359931355141L).toGMTString()); 

: 42:35 GMT 일 4 '', 및

System.out.println(" date " + new Date(1359931355141L).getDate()); 

본 의한 출력했다 "참조 왜 여기 3 ???

내 프로그램에 무슨 문제가 있는지 알 수 없었습니다. 내 JVM이 버그에 빠졌는지 의심 스럽다.
여러분, JVM에서이 두 문장에 대한 테스트를하고 싶습니까?

+0

이 프로그램을 실행 한 시스템의 시간대는 무엇입니까? – mthmulders

+0

어디 계세요? 시간이 22:42 GMT 인 경우 스페인은 GMT + 1입니다. 그러나 이제는 여름 시간으로 인해 +2입니다. 따라서 같은 순간이 다음 날 00시 42 분입니다. –

답변

12

중부 유럽의 동쪽에 있기 때문에 시간대는 GMT + 1.5Hr 이상). (BTW되지 않습니다)

getDate()이 달의 일를 반환하고 영국 반면, 시간대에, 그 시대의 시간이 다음 날에 이미 있기 때문에 (대신 3의) 4을 반환하는 것 (GMT) 이 달의 여전히 3 일입니다.

+0

아, 전 바보 같았습니다. 모든 답장을 보내 주셔서 감사합니다. 고마워. – user718146

1

로캘은 무엇입니까? 2012 년 2 월 3 일 22시 42 분 35 초 GMT이지만 현지 시간은 GMT + 10이고 현지 날짜는 4 일입니다. 전혀 예상하지 못하는 현상입니다.

0

음. 현재 로케일에 따라 다릅니다. GMT는 GMT 시간대 인 경우 시간을 제공합니다. getDate는 로케일 시간을줍니다.