从XML解析的ISO8601日期具有不同的时区

时间:2016-03-07 09:56:48

标签: xml date datetime iso8601

我有一个XML段,其中包含两个格式的日期,例如2016-03-22和2016-03-29。它们从XML解析为String对象,然后转换为符合ISO8601的日期对象。在此过程中,2016-03-22被解释为2016年2月22日00:00:00 GMT,而第二个日期被解释为2016年3月29日00:00:00 BST。您将看到一个在GMT TZ和另一个在BST时区。这意味着计算这些日期之间的天数会导致一天低于我的预期。时钟今年3月30日前进,我不确定是否存在相关性,因为这种情况发生在接近但不包括3月30日的日期范围内。今年也是闰年,不能确定这是否与所涉及的日期有关。

你有没有想过为什么会这样?

谢谢, GER。

1 个答案:

答案 0 :(得分:0)

仅供参考,大多数(如果不是全部)欧洲国家在3月27日星期日更改为夏令时。这也解释了解析“2016-03-29”时获得的BST(英国夏令时)时区。 / p>

但是,如果您根据最初不包含时区信息的输入数据执行期间或持续时间计算,您应该得到这样的结果。

如果您使用的是Java,我建议使用Java 8中引入的优秀java.time API。如果Java 8不是一个选项,请查找Joda Time或其C#(.NET)版本的Noda Time。