2012-02-22 160 views
46

我使用的是當前成語違約日期的時區爲UTC對Jodatime的日期時間

DateTime now = new DateTime(DateTimeZone.UTC); 

有沒有辦法爲默認,所以我可以創建使用默認的構造函數,因此基於UTC的datetime對象目前正在創建UTC datetime對象它更隱含?

DateTime now = new DateTime(); 

回答

60

如果你只想設置喬達時間的默認時區,使用DateTimeZone.setDefault


如果你想改變的是整個JVM用途使用TimeZone.setDefault方法的時區。請務必儘早設置它,因爲它可以通過joda時間緩存。引用自DateTimeZone.getDefault

默認時區來源於系統屬性user.timezone。如果它是空的或者不是有效的標識符,那麼轉換JDK TimeZone默認值的值。如果失敗,則使用UTC。

+8

請注意,這將影響_whole_ jvm,這可能會或可能不會是OP想要的。 – jtahlborn 2012-02-22 15:36:28

+4

增加了如何將它設置爲「僅限」焦點時間('DateTimeZone.setDefault')。 – dacwe 2012-02-22 15:41:22

+4

我想強調jtahlborn的警惕。 'TimeZone.setDefault'影響*在同一個JVM中運行的*每個應用*的每個線程*。調用此方法可能會在其他類中產生各種混淆和意外行爲。 – 2014-07-23 18:29:41

15

如果你真的關心多餘的字符,那麼只需要創建一個輔助方法:

public static DateTime newUTCDateTime() { 
    return new DateTime(DateTimeZone.UTC); 
}