GWT — получение форматирования часового пояса/временной метки браузера

Я отправляю метки времени своему клиенту GWT, используя время GMT/Zulu, причем каждая строка обозначается как таковая (например, 2012-01-19T16:29:18Z или 16:29 по Гринвичу). Как показать это в браузере в местном часовом поясе? Так что для меня в CST я ожидаю увидеть 10:29 утра.

Если я не форматирую, я получаю дату как 16:29, что я и ожидаю. Если я использую объект TimeZone TimeZone.createTimeZone(0), я получаю по какой-то причине 22:29 (а не AM, как ожидалось). Я полагаю, что должен передать что-то более значимое, чем 0, но как мне получить правильное значение для того, где работает браузер?

J


person Joel    schedule 19.01.2012    source источник
comment
Это может быть важно, я анализирую ответ REST, используя DateTimeFormat DateTimeFormat.getFormat(yyyy-MM-dd'T'HH:mm:ss'Z');   -  person Joel    schedule 19.01.2012


Ответы (2)


Вы можете получить смещение часового пояса, настроенное в браузере, используя:

Date d = new Date();
d.getTimezoneOffset();

Он не даст вам имя часового пояса, я не думаю, что это возможно.

Вы отправляете время в виде метки времени или строки? Я считаю, что лучший подход — отправить временные метки UTC клиенту, а затем отформатировать их в любую зону, которая мне нужна, с помощью DateTimeFormat/TimeZone. Но я предполагаю, что если вы анализируете строку даты, включая смещение, вы все равно получите временную метку UTC.

person aidanok    schedule 19.01.2012
comment
Что помогает. Я понял, что моя проблема заключалась в том, что Z (для времени zulu/gmt) не анализировался как часть даты, поэтому предполагалось, что ответ сервера был по местному времени, что все испортило. Ваш ответ помог разобраться. - person Joel; 19.01.2012
comment
Кажется, это устарело, или вы не используете java.util.Date? - person Miquel; 18.03.2013
comment
К сведению: возвращается текущее смещение часового пояса. То есть смещение, которое применяется к используемому значению даты. Это может быть не применимое смещение для всех дат и времени, учитывая, что многие часовые пояса сдвигают свое смещение на летнее время. - person Matt Johnson-Pint; 30.06.2014

Если вы хотите, чтобы клиентский код GWT форматировал время в часовом поясе браузера, вы должны передать данные с сервера клиенту в виде объекта java.util.Date.

person Olaf    schedule 19.01.2012