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", который соответствует указанному вами формату даты.