Ustaw domyślną strefę czasową dla f: convertDateTime

Używam JSF1. 2 i mam mały problem ze strefami czasowymi.

Kalendarz szanuje moją strefę czasową i zapisuje prawidłowy czas w bazie danych. Kiedy pokazuję go za pomocą H: outputtext z F: convertDateTime pokazuje złą datę (myślę, że z domyślną strefą czasową).

Mogę zrobić coś takiego:

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

FormatoDataCalendario2 = dd / MM / RRRR, HH: mm w wiadomościach.właściwości.

Mogę też umieścić strefę czasową w wiadomościach, ale wierzę, że ma jakąś konfigurację, którą mógłbym użyj.

Author: Matt Johnson, 2011-09-20

2 answers

JSF Konwertery daty / czasu domyślnie ustawiają według specyfikacji strefę czasową UTC. Jeśli chcesz użyć innej strefy czasowej, naprawdę musisz ją określić w konwerterze. Lub, jeśli masz 100% kontroli nad środowiskiem uruchomieniowym produkcji, to od wersji JSF 2.0 możesz ustawić jego systemową strefę czasową na żądaną strefę czasową i dodać następujący parametr kontekstowy do web.xml:

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

W ten sposób JSF użyje strefy czasowej systemu uzyskanej przez TimeZone#getDefault() jako domyślny konwerter Strefa czasowa.

Należy pamiętać, że java.util.Date obiekt sam w sobie również nie przechowuje żadnych informacji o strefie czasowej. Jest również zawsze domyślna Strefa czasowa UTC. Należy o tym pamiętać podczas przetwarzania przesłanej daty/godziny.

Zobacz też:

 89
Author: BalusC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:34:45

Aby poprawnie wyświetlić datę, musisz zmodyfikować ją tylko w swojej sieci.xml

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

Oraz w pliku xhtml

<h:outputText value="#{report.date}">
    <f:convertDateTime pattern="dd-MMM-yyyy" />
</h:outputText>
To kwestia strefy czasowej. Context param powinien to naprawić.
 -3
Author: amit,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-02 12:56:11