Joda DateTime gmt问题

时间:2016-10-27 10:27:33

标签: java datetime jodatime

我想直接在joda github上提出问题,但有一个提示,我应该首先在stackoverflow上问它。

如果您尝试在格林威治标准时区(英国)使用joda DateTime对象,则会得到错误的DateTime值

重现

的步骤

像这样写方法

DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSS'Z");
DateTime dt = formatter.parseDateTime("2014-02-16T07:00:00.000Z");
System.out.println(dt);

预期值

  1. 2014-05-16T07:00:00.000+00:00
  2. 实际值

    1. 2014-05-16T07:00:00.000+Z
    2. 在英国,时间每3月29日就会改变一次。这是一年中的最后一天,时间是+00:00。从3月30日到下一次改变时间为+01:00。

      如果认为joda处理+00:00 gmt有问题。

2 个答案:

答案 0 :(得分:0)

英国时间不是GMT ...如果您想要英国时间,请使用完整的时区名称:Europe/London

答案 1 :(得分:0)

根据一年中的时间,英国可能会参加GMT或BST。时区可以如下所述: -

DateTime dt = formatter.parseDateTime("2014-02-16T07:00:00.000Z").withZone(DateTimeZone.forID("Europe/London"));