2010-11-26 48 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

相關問題