2014-04-01 72 views
0

我想將yyyyMMdd,yyyy-MM-dd,yyyy/MM/dd等幾種格式的日期轉換爲'yyyy-MM-dd HH:mm:ss'的標準。在下面的代碼中,我將預期的日期格式設置爲'yyyyMMdd',然後在'2014-02-21'中傳遞。我期待一個解析異常,但一些如何返回'2013-12-02 00:00:00'。我在這裏錯過了什麼?Java SimpleDateFormat

SimpleDateFormat sdfSource = new SimpleDateFormat("yyyyMMdd"); 
Date date = sdfSource.parse("2014-02-21"); 
SimpleDateFormat sdfDestination = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
System.out.println(sdfDestination.format(date)); 
+0

4個答案在同一分鐘內! – PbxMan

回答

3

我會建議在該片段的前兩行之間添加sdfSource.setLenient(false);

這裏發生了什麼事是"-0"被解釋爲月份,而"2"被解釋爲當天。寬恕真實(這是默認)這是可以接受的 - "-0"被解釋爲第一個月之前的月份;即「上一年的十二月」。

+0

謝謝,這工作。當我試圖找出這個問題時,我發現了這個問題,但是有些問題我看過了。 – kiran

1

默認情況下,lenient屬性設置爲true。 here

sdfSource.setLenient(false); 
+0

謝謝,這工作。 – kiran