2010-04-20 132 views

回答

3

我的建議是完全忽略默認時區。總是指定您想要使用的時區,這使得意外地使用對您而非用戶有意義的內容變得更加困難。事實上,對於Noda Time,我們已經刪除了默認時區的所有內容。

強制Joda參考:我也建議使用Joda Time而不是內置的日期/時間API。

+0

是的,我也建議使用喬達時間,但不幸的是它不可能(在我的情況下)。默認的應用程序服務器是否使用'SecurityManager'並避免設置'user.timezone'? – codevour 2010-04-20 09:45:58

+0

@chrsk:說實話,我不知道。即使沒有使用喬達時間,您也可以嘗試確保您始終在相關時指定時區。你能否提供關於你的情況的更多細節? – 2010-04-20 09:53:09

0

阻止TimeZone.setDefault(...)具有VM範圍效應的方法是確保SecurityManager不會賦予應用程序寫入"user.timezone"系統屬性的權限。

要理解爲什麼,請看the source code

現在,可以說依靠沒有記錄在Javadoc中的行爲有點調皮。但在這種情況下,我們沒有多少選擇。此外,鑑於這種特定方法的歷史,Sun/Oracle工程師不太可能再次改變其行爲。