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 上给出“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?

4

2 回答 2

1

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

于 2010-03-05T09:41:04.623 回答
1

尝试传递与您指定的日期格式相对应的“20110731”。

于 2010-03-05T09:16:11.767 回答