У меня есть несколько вопросов относительно часовых поясов. Мы храним всю нашу дату в формате UTC, но нам нужно показать некоторые из них по местному (восточному США) времени и по UTC одновременно.
Вот мой тест, у меня есть дата в UTC и я хочу показать ее в UTC и местном времени:
<html>
<!-- let's assume this date is in UTC, I get it from Database in my code -->
<jsp:useBean id="dateValue" class="java.util.Date" />
GMT
<fmt:formatDate value="${dateValue}" pattern="yyyy-MM-dd HH:mm:ss z" timeZone="GMT"/>
</html>
<!-- Displays the original time +4 - not what I need-->
No time zone
<fmt:formatDate value="${dateValue}" pattern="yyyy-MM-dd HH:mm:ss z"/>
<!-- Displays the original time, but timezone is EDT -->
US/Eastern
<fmt:formatDate value="${dateValue}" pattern="yyyy-MM-dd HH:mm:ss z" timeZone="US/Eastern"/>
<!-- Displays the original time, timezone is EDT, I need original + 4 -->
</html>
Для повторения:
У меня есть время UTC из базы данных, и я хочу отформатировать его и показать в часовом поясе UTC. Сервер работает в другом часовом поясе, кроме UTC.
Мне нужна такая функция, как
convertToTimezone(date, originalTimeZone, desiredTimeZone).
То, что предоставляет fmt: formatDate, похоже на
convertToTimezone(date, serverTimeZone, desiredTimeZone).
Я мог бы взломать его, но это обычно вызывает проблемы при переходе на летнее время и т. Д.
P.S.
Для тех, кто ищет ответы, нужно запустить ваш сервер в формате UTC, тогда преобразования будут работать нормально. Если это невозможно изменить, единственный способ - создать новую дату с часовым поясом UTC, сделать это в явном виде, я сам преобразовал время, которое мне пришлось отправлять в текст, затем создал новую дату и предоставил данные из текста и Часовой пояс UTC Если вы этого не сделаете, часовой пояс считывается с сервера.