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

setLenient(false) 設定を無視するための Java 1.4のバグがあります。
Java 1.5 にはこのバグがなく、1 年に 20 か月がないため、入力の解析に失敗し、代わりに null が返されます。

于 2010-03-05T09:41:04.623 に答える
1

指定している日付形式に対応する「20110731」を渡してみてください。

于 2010-03-05T09:16:11.767 に答える