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);

Это выдает "2500-01-01 00:00:00" на jdk1.4, что неверно и возвращает ноль на jdk1.5

Почему это дает "2500-01-01 00:00:00" на jdk1.4? Если он не может выполнить синтаксический анализ даты, используется ли по умолчанию эта дата?

ОБНОВИТЬ:

Я знаю, что если я использую 20110731, это работает... Но если я передаю 07312011, это дает некоторую случайную дату в 1.4 и ноль в 1.5 Итак, мои вопросы

В 1.4, если переданная дата не соответствует формату, по умолчанию она равна 2500-01-01?

Почему он возвращает ноль на 1,5?

2 ответа

Только уловка, есть ошибка для Java 1.4, из-за которой игнорируется установка setLenient(false).
Java 1.5 не имеет этой ошибки, и, так как нет 20 месяцев в году, не удается проанализировать ваш ввод и вместо этого возвращает ноль.

Попробуйте передать его "20110731", который соответствует указанному вами формату даты.

Другие вопросы по тегам