【问题标题】:Defaulting date time zone to UTC for Jodatime's DateTimeJodatime 的 DateTime 的默认日期时区为 UTC
【发布时间】:2012-03-12 22:52:34
【问题描述】:

我目前正在使用当前惯用语创建 UTC DateTime 对象

DateTime now = new DateTime(DateTimeZone.UTC);

有什么方法可以默认,所以我可以使用默认构造函数创建基于 UTC 的 DateTime 对象,这样它就更隐含了?

DateTime now = new DateTime();

【问题讨论】:

    标签: java jodatime


    【解决方案1】:

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


    如果您想更改 整个 jvm 使用的时区,请使用 TimeZone.setDefault 方法。请务必尽早设置它,因为它可以被 joda time 缓存。引用自DateTimeZone.getDefault

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

    【讨论】:

    • 注意,这将影响 整个 jvm,这可能是也可能不是 OP 想要的。
    • 添加了如何“仅”为 joda 时间设置它 (DateTimeZone.setDefault)。
    • 我想强调 jtahlborn 的谨慎。 TimeZone.setDefault 影响在同一 JVM 中运行的每个应用程序每个线程。调用此方法可能会在其他类中产生各种混乱和意外行为。
    • 感谢您指向DateTimeZone.setDefault。简化事情以使服务器的行为就像它在 UTC 中一样。 MongoDB 最好让这些变得简单一些。
    【解决方案2】:

    如果您真的担心多余的字符,那么只需创建一个辅助方法:

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

    【讨论】:

      猜你喜欢
      • 2020-07-08
      • 1970-01-01
      • 2018-01-16
      • 1970-01-01
      • 2020-08-31
      • 2010-10-28
      • 1970-01-01
      • 2017-01-01
      • 1970-01-01
      相关资源
      最近更新 更多