Joda Datetime构造函数:我是否需要为以Z结尾的String指定TimeZone?

时间:2015-03-25 17:17:19

标签: java datetime timezone jodatime utc

我的数据库将所有日期时间值存储为UTC中的字符串。当我看到它们就像这样的字符串

2013-05-28T01:38:13.000Z
  1. 根据documentation,' Z'表示时区偏移量。因为' Z'之后什么都没有。这是否意味着没有偏移,因此它代表UTC时间?

  2. 如果是,我还需要在构造函数中指定TimeZone吗?由于字符串似乎已经这样做(说它是UTC时间)?

    DateTime myDate = new DateTime("2013-05-28T01:38:13.000Z", DateTime.UTC); 
    
  3. 第二个参数是否必要? 感谢。

1 个答案:

答案 0 :(得分:2)

是。您仍需要传递时区(UTC)。

这样做的原因是仅字符串参数将正确提取年,月等的值,但然后将它们解释为属于默认时区,而不是解析Z + -x部分。

(我承认它有点令人困惑。)

您可以在另一个问题with call trace中查看更多详细信息,以及下面的评论,以便更好地解释Z的含义