Подтвердить что ты не робот

Установите часовой пояс по умолчанию для f: convertDateTime

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

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

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

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

formatoDataCalendario2 = dd/MM/yyyy, HH: mm в messages.properties.

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

4b9b3361

Ответ 1

Преобразователи даты/времени 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. Помните об этом при обработке поданной даты/времени.

См. также:

Ответ 2

Для правильной отображения даты вам нужно изменить только в своем 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>

Его проблема с часовым поясом. Параметр context должен его исправить.