Grails应用程序服务多个时区

时间:2010-11-26 01:16:51

标签: grails timezone

在具有多个时区的用户的grails应用程序中处理时区的正确方法是什么?对于muilt timezone Grails应用程序是否有标准方法?也许Rails处理多时区支持的方式有类似的东西? http://mad.ly/2008/04/09/rails-21-time-zone-support-an-overview/

有没有办法设置每个用户会话的当前时区?这意味着您可以使用多个活动用户会话,使用不同的时区来处理“日期”。

我试图避免手动处理时区转换。

由于

2 个答案:

答案 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,如果你有一些常见的功能,比如后台工作(我相信你会),它会用到哪个时区?