将Jodatime的DateTime的日期时区默认为UTC

alg*_*ous 54 java jodatime

我目前正在使用当前的习惯用法创建UTC DateTime对象

DateTime now = new DateTime(DateTimeZone.UTC);
Run Code Online (Sandbox Code Playgroud)

有没有办法默认所以我可以使用默认构造函数创建基于UTC的DateTime对象,所以它更隐含?

DateTime now = new DateTime();
Run Code Online (Sandbox Code Playgroud)

dac*_*cwe 70

如果您只想为joda时间设置默认时区,请使用DateTimeZone.setDefault.


如果你想改变整个jvm使用TimeZone.setDefault方法的时区.请务必尽早设置它,因为它可以通过joda时间缓存..引自DateTimeZone.getDefault:

默认时区源自系统属性user.timezone.如果该值为null或不是有效标识符,则转换JDK TimeZone缺省值.如果失败,则使用UTC.

  • 请注意,这将影响_whole_ jvm,这可能是也可能不是OP想要的. (9认同)
  • 添加了如何为joda时间(`DateTimeZone.setDefault`)"仅"设置它. (4认同)
  • 我想强调jtahlborn的谨慎.`TimeZone.setDefault`影响*在同一个JVM中运行的每个app*的每个线程*.调用此方法可能会在其他类中产生各种混淆和意外行为. (4认同)

jta*_*orn 15

如果你真的关心额外的字符,那么只需创建一个辅助方法:

public static DateTime newUTCDateTime() {
  return new DateTime(DateTimeZone.UTC);
}
Run Code Online (Sandbox Code Playgroud)