在具有多个时区的用户的grails应用程序中处理时区的正确方法是什么?对于muilt timezone Grails应用程序是否有标准方法?也许Rails处理多时区支持的方式有类似的东西? http://mad.ly/2008/04/09/rails-21-time-zone-support-an-overview/
有没有办法设置每个用户会话的当前时区?这意味着您可以使用多个活动用户会话,使用不同的时区来处理“日期”。
我试图避免手动处理时区转换。
由于
答案 0 :(得分:2)
首先,向用户提供一个选择 - 他所在的时区通常是一个好主意。你可以尝试从他的设置中推断它,但这不可靠。在grails中,您可以让用户通过以下方式选择他的时区:
<g:timeZoneSelect name="myTimeZone" />
请注意,value
属性默认为当前Locale
。所以我猜grails的默认localeresolver可以很好地猜测用户的语言环境。
要使其正常工作,您需要将所有时间存储在数据库中以UTC(或其他为整个应用程序修复的时区)
<g:formatDate>
的文档声称它只有3个属性,但似乎至少version 1.2它支持timeZone
属性。所以你必须放timeZone="${currentUser.timeZone}"
答案 1 :(得分:0)
你可以尝试使用JodaTime和DateTime类,里面有时区。不过,我相信你需要以UTС存储时间。为此,您必须提供自己的映射到GORM,它应用UTC,自己的日期格式taglib,考虑用户时区,以及更多的东西。
OTOH,如果你有一些常见的功能,比如后台工作(我相信你会),它会用到哪个时区?