Не удается правильно преобразовать тип даты YY в YYYY (проблемы с 2000 годом) - PullRequest
0 голосов
/ 24 июня 2011

У меня есть приложение Seam / JSF с полем даты.

Когда пользователь вводит 01.01.11, он интерпретирует его как 01.01.0011, что, очевидно, неверно.Правильное значение должно было быть 01.01.2011

Кто-нибудь сталкивался с этим?Как ты это решил?Xhtml выглядит следующим образом:

<h:inputText value="#{budgetHandler.grantedFrom}">
  <s:convertDateTime type="date" pattern="dd.MM.yyyy"/>
</h:inputText>

1 Ответ

0 голосов
/ 25 июня 2011

Это не проблема 2000 года. Это просто ошибка пользователя. Вы попросили пользователя ввести dd.MM.yyyy, но пользователь ввел dd.MM.yy. Это просто представлено как последние 2 цифры 4-значного года. То же самое произойдет, если пользователь введет одну или три цифры как год.

Если вы исправите свой шаблон как dd.MM.yy, вы увидите, что он работает для dd.MM.yy ввода, как и следовало ожидать.

<s:convertDateTime type="date" pattern="dd.MM.yy"/>

Год 11 интерпретируется как 2011, а не 1911. Видите, проблем с Y2K нет.

Если вы хотите разрешить оба шаблона дат, я бы предложил создать пользовательский конвертер, который выполняет свою работу правильно. Вы можете найти исходный пример в моем ответе на этот вопрос: как проверить введенную дату по нескольким шаблонам?

...