Во-первых, часто хорошей идеей является предоставление пользователю выбора - в каком часовом поясе он находится. Вы можете попытаться определить его по его настройкам, но это ненадежно.В Grails вы можете позволить пользователю выбрать его часовой пояс:
<g:timeZoneSelect name="myTimeZone" />
Обратите внимание, что атрибут value
по умолчанию равен текущему Locale
.Так что я думаю, что по умолчанию grales localeresolver отлично подойдет, угадав языковой стандарт пользователя.
Чтобы это работало, вам нужно хранить все время в БД в UTC (или другом часовом поясе, который установленвсе приложение)
В документации <g:formatDate>
утверждается, что оно имеет только 3 атрибута, но, похоже, по крайней мере версия 1.2 поддерживает атрибут timeZone
,Таким образом, вы должны поставить timeZone="${currentUser.timeZone}"