我運行下面的代碼:SimpleDateFormat的解析字符串錯誤的時間
SimpleDateFormat sdf = new SimpleDateFormat("MM-dd-yyyy HH:mm:ss");
try{
Date date = sdf.parse("03-28-2003 01:00:00");
System.out.print(date.toString());
}
catch(Exception e){
//do something
}
解析的結果是這樣的日期:2003-03-28T02:00:00.000 + 0300
一個小時添加。
當我將年/日/小時更改爲任何其他有效的號碼時,我會得到正確的時間,不會增加額外的小時。如果我只改變分鐘或秒數,我仍然可以獲得新增的小時數。
誰能告訴我爲什麼會發生這種情況?
編輯:
這與夏令時在我的程序運行時導通UTC + 02的時區適用於:00。 在這個時區,時鐘在2003-03-28更改。這就是爲什麼要增加一小時的原因,正如下面的評論和回答所建議的那樣。
我使用了答案中建議的代碼來解析我的日期和解析工作!日期正確解析,額外的小時不被添加。
我得到這個輸出'Fri Mar 28 01:00:00 CET 2003'。這可能是一個CET!= CEST問題。 –
試試這個sdf.setTimeZone(TimeZone.getTimeZone(「GMT」)); – Feek
謝謝,我現在得到正確的時間,假設給定的日期是在當地時間..但在我的情況下,日期已在GMT時區給我,所以我不能使用它..我只需要將字符串解析爲日期對象。 – mormayr