SimpleDateFormat在jdk1.4上返回错误的日期

时间:2010-03-05 09:14:55

标签: java simpledateformat jdk1.4

String format = "yyyyMMdd";
SimpleDateFormat formatter = getSimpleDateFormat(format);
formatter.setLenient(false);

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

这在jdk1.4上给出了“2500-01-01 00:00:00”,这是不正确的,并在jdk1.5上返回null

为什么在jdk1.4上给出“2500-01-01 00:00:00”? 如果它无法解析日期,它是否默认为此日期?

更新:

我知道如果我使用20110731就可以了......但是如果我通过07312011,它会在1.4中给出一些随机日期,在1.5中为null所以,我的问题是

在1.4中,如果传递的日期与格式不对应,是否默认为2500-01-01?

为什么它在1.5上返回null?

2 个答案:

答案 0 :(得分:1)

尝试传递“20110731”,它对应于您指定的日期格式。

答案 1 :(得分:1)

只有一个gues,java 1.4有一个bug,用于忽略setLenient(false)设置。
Java 1.5没有此错误,因为一年中没有20个月无法解析您的输入并返回null。