Это должно быть довольно просто, но для жизни я не могу заставить это работать.Клиент вводит дату и время на сервер.Затем я беру эту дату и сохраняю ее на сервере в соответствии с его часовым поясом (который у меня уже есть), а затем отображаю ее клиенту в соответствии с его часовым поясом.Я использую весенний MVC с Hibernate.
Для кода сервера я делаю следующее:
GregorianCalendar calendar = new GregorianCalendar();
GregorianCalendar timeCalendar = new GregorianCalendar();
TimeZone tz = TimeZone.getTimeZone(user.getTimezone());
calendar.setTimeZone(tz);
calendar.setTime(entryDate);
timeCalendar.setTime(entryTime);
timeCalendar.setTimeZone(tz);
calendar.set(Calendar.HOUR_OF_DAY, timeCalendar.get(Calendar.HOUR_OF_DAY));
calendar.set(Calendar.MINUTE, timeCalendar.get(Calendar.MINUTE));
Я извлекаю объект Date из календаря и сохраняю его.
В JSP я делаю следующее:
<span class=""><fmt:formatDate timeZone="${timezone}" pattern="HH:mm a" value="${entry.entryDate}" /></span>
Я всегда получаю его на один или 2 часа иначе, чем должно быть.Я знаю, что я что-то здесь упускаю.Я просто не могу обернуть голову вокруг этого.Я чувствую, что перебрал это.