2010-03-05 67 views
0
String format = "yyyyMMdd"; 
SimpleDateFormat formatter = getSimpleDateFormat(format); 
formatter.setLenient(false); 

Date date = formatter.parse("07312011",new ParsePosition(0)); 
System.out.println(date); 

不正確的日期這給出了JDK1.4這是不正確的,返回上JDK1.5的SimpleDateFormat返回上JDK1.4

空「2500年1月1日00:00:00」爲什麼這會給予jdk1.4上的「2500-01-01 00:00:00」? 如果它不能解析日期,它是否默認爲這個日期?

UPDATE:

我知道,如果我使用20110731它的作品...但如果我通過07312011,它給出了1.5的1.4一些隨機的日期和空,因此,我的問題是

在1.4 ,如果傳遞的日期與格式不符,它是否默認爲2500-01-01?

爲什麼它在1.5上返回null?

+1

知道爲什麼下跌票,確定該錯誤是一種顯而易見的,格式化是不是在這裏 – RageZ 2010-03-05 09:18:14

回答

1

嘗試通過它「20110731」,它對應於您指定的日期格式。

+0

我知道,它的作品...但如果我通過07312011,它給出了1.4的一些隨機的日期和空在1.5 所以,我的問題是 在1.4中,如果通過的日期與格式不符,它是否默認爲2500-01-01? 爲什麼它在1.5上返回null? – 2010-03-05 09:22:25

+0

如果您知道它的工作原理,那麼您應該在問題中提及並明確聲明您對JDK不一致的API方法調用感興趣,並且數據不正確。 – cherouvim 2010-03-05 09:24:43

1

只有gues,對於java 1.4,有一個bug,用於忽略setLenient(false)設置。
Java 1.5沒有這個錯誤,因爲一年中沒有20個月沒有解析你的輸入,而是返回null。

相關問題