SimpleDateFormat возвращает неверную дату на jdk1.4 - PullRequest
0 голосов
/ 05 марта 2010
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-0100:00:00 "на jdk1.4?Если он не может выполнить синтаксический анализ даты, используется ли по умолчанию эта дата?

ОБНОВЛЕНИЕ:

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

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

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

Ответы [ 2 ]

1 голос
/ 05 марта 2010

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

1 голос
/ 05 марта 2010

Попробуйте передать значение «20110731», соответствующее указанному формату даты.

...