2012-10-07 35 views
0

在標題環境嘗試這樣的:與JDK 7 U7和NetBeans 7.2解析日期給出了不想要的結果

http://www.javadb.com/check-if-a-string-is-a-valid-date

但是,它沒有以正確的方式工作。當調用dateFormat.parse(inDate.trim());時,它不會引發錯誤,而是對日期進行加1。

例如,如果inDate.trim()"2005-02-29",那麼它使得解析像"2005-03-01"

顯然,我不會這種行爲。可以做什麼?

+0

沒有什麼如'2005-02-29'了'二月天的29th'在'[2000發生,2004,2008,...]'(http://en.wikipedia.org/wiki/February_29) – user1406062

+0

...已經對''說過了,那麼它會使解析像「2005-03-01」'部分.. – mishamosher

回答

1

坐落在SimpleDateFormat爲false setLenient()方法在這種情況下拋出錯誤:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 
sdf.setLenient(false); 
System.out.println(sdf.parse("2005-02-29")); // This would throw parse exception. 
+0

所以該死的容易是吧?謝謝! – mishamosher

2

2005年2月有28天。通過分析"2005-02-29",有一天的偏移將日期變爲第一次。使用setLenient(false)來防止解析器「調整」無效日期。

+0

我已經知道......我重複一遍,那就是我不會的。任何方式來避免這種情況?而且,根據javadb.com頁面,它應該拋出一個ParseException,但它不......我只是想要一些代碼,說'嘿,這個日期是無效的! – mishamosher

+1

我忘了添加setLenient方法,對不起:)。我正在搜索正確的方法定義,同時編輯帖子,並得到了側面... – Gamb

相關問題