2010-03-05 23 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。

相关问题