2012-02-22 97 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); 
}