Ответ 1
Это, несомненно, проблема, связанная с часовым поясом.
JSF по умолчанию использует GMT (UTC) для преобразования даты/времени. Поэтому, если часовой пояс вашей серверной платформы по умолчанию - GMT + X (не GMT-X), тогда время вернется в прошлое X-количество часов. Если время уже 00:00:00 (полночь), то дата даже вернется в один прекрасный день в прошлом.
Есть два стандартных способа достижения вашего функционального требования:
-
Сообщите JSF использовать часовую зону по умолчанию для платформы сервера для всего преобразования даты и времени, добавив следующий параметр контекста в
web.xml
:<context-param> <param-name>javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE</param-name> <param-value>true</param-value> </context-param>
-
Измените каждый
<f:convertDateTime>
, чтобы явно указать часовой пояс, специфичный для webapp. Поскольку вы находитесь в Германии, и шаблон формата даты также подтверждает это, я буду считать CET.<f:convertDateTime ... timeZone="CET" />
В любом случае использование не универсального или даже смешанного часового пояса во всем приложении не рекомендуется. Рекомендуется устанавливать часовой пояс во всех слоях и средах для UTC. Не только на уровне сервера и переднего уровня и уровня представления, но также и в базе данных SQL, а также на уровне верхнего уровня и настойчивости. Таким образом, код не чувствителен к вопросам, связанным с часовым поясом и DST (!), И вы можете просто сосредоточиться на изменении часового пояса только во время презентации, если это необходимо.