2013-11-14 55 views
0

在我的程序,英寸爲什麼設置timeZone值會影響整個項目,而不會影響單個實例?

用戶登錄我用這條線時,設置TimeZone

TimeZone.setDefault(TimeZone.getTimeZone(usersTimeZoneInMilliSecond)) ; 

我已經設置了默認TimeZone爲用戶TimeZone但我已經注意到了TimeZone的一個人當另一個人從另一個區域登錄時更改爲另一個位置。

通過這個每個人來自世界各地的不同部分登錄將獲得登錄的最後一個人。

誰能幫助我理解爲什麼會這樣或者我如何能避免的timezone

我拿出getTimezoneOffset使用javaScript,我需要在隨後的程序中的所有其他地方使用值。它的需要,因爲我正在開發一個像視圖日曆和應用程序需要知道他們看到的日期,而不是UTC或服務器時間。

+1

請給我們的代碼。 –

+0

@EelLee發佈代碼 – Dileep

+0

所有相關代碼,如果可以的話。因爲它看起來像你正在使用一個「全球」TimeZone。 –

回答

2

您的代碼更改了靜態 * 默認 *時區。如果您只想爲特定用戶更改它,則需要將其保存在一個僅限每個用戶的非靜態變量中。

檢查TimeZone.setDefault javadoc。

爲了節省每個用戶的時區,這取決於您正在運行的程序以及在什麼環境下。

如果它是一個基於網絡的環境,我認爲將時區ID存儲爲會話屬性是最好的主意。

+0

Okie解釋了這個問題,但是您能否幫助我解決此問題..我需要爲所有人指定timezone網頁,我的意思是當前用戶登錄。 – Dileep

+1

你如何獲得用戶的時區?你需要在哪裏以及如何使用它?請爲您添加所有相關的代碼問題。 – BobTheBuilder

+0

在會話中存儲偏移值將解決,但它有很多開銷,我必須逐個設置TimeZone值。即對於我設置的每個Date變量。對我而言,這確實是一個問題。 – Dileep

1

通過調用TimeZone.setDefault(..)您更改時區的默認設置,因此此更改不限於一個特殊用戶,如果他們要求默認值,則會影響所有用戶。

+0

是的,它解釋了,但你能告訴我一種方法來解決它..! – Dileep

+0

除非要更改所有用戶的默認值,否則不要調用setDefault。確定時區相關的代碼中的所有地方,然後使用用戶特定的時區進行計算,格式化等。 – mschenk74

2

TimeZone.setDefault(TimeZone.getTimeZone(usersTimeZoneInmilliSecond)); 它改變了整個應用程序的時區,這是一個靜態引用。 要爲不同的用戶維護不同的時間戳,您需要使用日期對象。

+0

是的,我接受但我現在正在尋找第二部分的答案。 – Dileep

相關問題