6
我的java程序需要使用當前本地時區記錄事件。問題是,用戶有能力更改時區,但即使系統時區已更改,Java程序仍會以「舊」時區繼續運行。
運行時Java時區更改
我懷疑是Java虛擬機設置爲默認值當Java程序運行時區(對於Timezone.setDefault()
的Javadoc說,「重置默認它原本當VM第一次啓動的價值。」)
這是真的嗎? Java不能將默認時區更新到新系統時區,因此需要重啓VM?
我的java程序需要使用當前本地時區記錄事件。問題是,用戶有能力更改時區,但即使系統時區已更改,Java程序仍會以「舊」時區繼續運行。
運行時Java時區更改
我懷疑是Java虛擬機設置爲默認值當Java程序運行時區(對於Timezone.setDefault()
的Javadoc說,「重置默認它原本當VM第一次啓動的價值。」)
這是真的嗎? Java不能將默認時區更新到新系統時區,因此需要重啓VM?
爲什麼不把時區設置爲聲明的變量?將其初始化爲默認時區,然後如果用戶更改它,則將其保存到變量中。在日誌中調用變量。
在java 7中,'setDefault'需要一個zone參數,並且只有在傳入null時纔會重置爲原始值:「如果zone爲null,則將默認值重置爲最初VM初次啓動時的值。 [API here](http://docs.oracle.com/javase/7/docs/api/java/util/TimeZone.html#setDefault(java.util.TimeZone)) – azurefrog