Установите часовой пояс по умолчанию для f: convertDateTime - PullRequest
36 голосов
/ 20 сентября 2011

Я использую JSF1.2 и у меня небольшая проблема с часовыми поясами.

Календарь учитывает мой часовой пояс и сохраняет правильное время в базе данных.Когда я показываю его, используя ah: outputtext с af: convertDateTime, он показывает неправильную дату (я думаю, с часовым поясом по умолчанию).

Я могу сделать что-то вроде:

<h:outputText value="#{atividade.atividade.dataCriacao.time}">
  <f:convertDateTime pattern="#{msg.formatoDataCalendario2}" timeZone="America/Sao_Paulo" />
</h:outputText>

formatoDataCalendario2 = dd/ MM / гггг, ЧЧ: мм в messages.properties.

Я могу также указать часовой пояс в сообщениях, но я считаю, что у него есть некоторая конфигурация, которую я мог бы использовать.

Ответы [ 2 ]

90 голосов
/ 21 сентября 2011

Преобразователи даты и времени JSF по умолчанию настроены на часовой пояс UTC.Если вы хотите использовать другой часовой пояс, то вам действительно нужно указать его в конвертере самостоятельно.Или, если у вас есть 100% контроль над производственной средой выполнения, тогда, начиная с JSF 2.0, вы можете установить ее системный часовой пояс на нужный часовой пояс и добавить следующий параметр контекста в web.xml:

<context-param>
    <param-name>javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE</param-name>
    <param-value>true</param-value>
</context-param>

Таким образомJSF будет использовать часовой пояс системы, полученный как TimeZone#getDefault() в качестве часового пояса конвертера по умолчанию.

Обратите внимание, что объект java.util.Date сам по себе также не хранит любыеинформация о часовом поясе.По умолчанию всегда используется часовой пояс UTC.Помните об этом при обработке отправленных даты / времени.

См. Также:

0 голосов
/ 02 января 2013

Для корректного отображения даты вам нужно изменить только в вашем web.xml

<context-param>
    <param-name>javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE</param-name>
    <param-value>true</param-value>
</context-param>

и в вашем файле xhtml

<h:outputText value="#{report.date}">
    <f:convertDateTime pattern="dd-MMM-yyyy" />
</h:outputText>

Это проблема с часовым поясом. Контекстный параметр должен это исправить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...