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.
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ż:
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ć.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