2010-11-26 29 views
4

在具有多个时区的用户的grails应用程序中处理时区的正确方法是什么?有没有一种标准的方法来实现时区Grails应用程序?也许Rails处理多时区支持的方式有些相似之处? http://mad.ly/2008/04/09/rails-21-time-zone-support-an-overview/服务于多个时区的Grails应用程序

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

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

感谢

回答

2

首先,它往往是提出一个选择的用户是一个好主意 - 他是在时区你可以试着从他的推断设置它,但这是不可靠的。 Grails中可以让用户通过选择自己的时区:

<g:timeZoneSelect name="myTimeZone" /> 

注意,value属性默认为当前Locale。所以我猜测grails的默认localeresolver会做一个很好的工作来猜测用户的语言环境。

对于工作,你需要存储在数据库中的所有时间在UTC(或固定为整个应用程序的另一个时区)

<g:formatDate>索赔它只有3个属性,但因为它似乎的文档至少version 1.2它支持timeZone属性。所以你必须把timeZone="${currentUser.timeZone}"

0

你可以尝试使用JodaTime和DateTime类,它里面有时区。不过,我相信你需要在UTICS中存储时间。为此,您必须提供自己的映射到适用于UTC的GORM,自己的日期格式taglib,考虑用户时区等等。

OTOH,如果你有一些共同的功能,如后台作业(我相信你会),它将使用什么时区?

+0

我的经验(使用java的默认日期和时间)是您可以使用任何时区作为“基本”/服务器日期和时间。它必须是一致的,并且grails运行的机器应该使用这个时区作为其系统时间,否则会出现不必要的“时间转换”。但我也推荐在java日期和时间出现问题后使用JodaTime。 – 2010-11-26 10:07:07

相关问题