2011-07-22 50 views
0

我在java中的日期轉換有點問題。當我把19700101添加到SimpleDateFormat,然後調用getTime時,我得到了-3600000。我寫測試:Java SimpleDateFormat和19700101轉換問題

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd"); 
Date date = dateFormat.parse("19700101"); 
System.out.println(date.getTime()); 
System.out.println(dateFormat.format(new Date(0))); 
System.out.println((new Date(0)).getTime()); 

的結果應該是:

0 
19700101 
0 

,但我得到

-3600000 
19700101 
0 

我的問題是,爲什麼SimpleDateFormat的返回-3600000(20Nov1969)?在哪裏可以找到有關格式和轉換錯誤的信息?

+0

嘗試'dateFormat.setTimeZone(TimeZone.getTimeZone(「UTC」));' –

回答

8

您使用的是哪個時區?我的猜測是你使用的是GMT + 1。設置時區爲「GMT」,你應該得到預期的結果。

您正在使用像CEST(GMT + 1)這樣的默認時區。當它是1970年1月1日00:00:00.000 CEST是1969年12月31日23:00:00.000 GMT從1970/01/01或-3600000毫秒-1小時。

+0

工作正常。爲什麼? –

+0

我已添加到我的答案。 –