0

我想从 ISO8601 字符串(例如,2012-11-05T07:00:00+0000)创建一个 DateTime 对象。这是代码:

...
DateTime day = new DateTime(dateStr);
System.out.println(dateStr + "=>" + day);

我得到了这些结果:

...
2012-11-04T07:00:00+0000=>2012-11-04T00:00:00.000-07:00
2012-11-05T07:00:00+0000=>2012-11-04T23:00:00.000-08:00
2012-11-06T08:00:00+0000=>2012-11-06T00:00:00.000-08:00
...

11-04并且11-06是正确的,但是11-05是错误的。如何解决?我在北美的西海岸。

4

1 回答 1

5

11-05 哪里错了?11 月 4 日当地时间凌晨 2 点(即 UTC 上午 9 点),西海岸时间从 UTC-7 变为 UTC-8。

现在 11 月 5 日上午 7 点 UTC,这是您的第二行,那个时间点之后,因此它是 UTC-8 是正确的......因此当地时间是 11 月 4 日晚上 11 点,如图所示。

Joda Time 就在这里(不出所料)。

于 2012-12-07T18:30:51.533 回答