2011-10-18 34 views
3

SimpleDateFormat模式是「yyyyMM」,arg是yyyy-MM,但沒有異常和錯誤的結果。爲什麼? THX ~~java SimpleDateFormat模式與參數不同

SimpleDateFormat format = new SimpleDateFormat("yyyyMM"); 
System.out.println(format.format(format.parse("2011-07"))); 

結果是201105

+1

有點奇怪,但它看起來像是一年正確,然後是-7,因此12-7 = 5 – Blem

+1

@Blem:正確。如果你看看源代碼,甚至還有特殊的邏輯來識別阿拉伯文本中的減號(它們被放置在數字後面) –

回答

4

使用setLenient(false);它會拋出你期望的異常。

查看setLenient() docs

0

輸入到parse是錯誤的,儘量

的System.out.println(format.format(format.parse( 「201107」)));

與2011-07年相比,它將該月解釋爲負7個月,其結果爲201005(12-7 = 5)。