如何正确地将xs:time转换为java日期

时间:2016-06-28 08:19:59

标签: java xml datetime

我有一个xml文件,其中有一个表示时间戳的字段。时间字段是可选的,因此没有组合的日期时间字段。使用JAXB,我们将此字段映射到java模型中的XMLGregorianCalendar。

现在我的问题是如何在xml中给出的日期将此时间转换为正确的当地时间(例如欧洲/柏林夏令时)?

xml文件中的时间如下所示:

<timeField>14:20:00.0+02:00</timeField>

未指定偏移量(假设为本地时间)或指定为UTC的偏移量。

如果我尝试

xmlGregorianCalendarDate.toGregorianCalendar().getTime();

然后假设时区为sun.util.calendar.ZoneInfo[id="GMT+02:00",offset=7200000,dstSavings=0,useDaylight=false,transitions=0,lastRule=null],不考虑DST。

相反,如果我使用xmlGregorianCalendarDate.toGregorianCalendar(timeZone).getTime();,那么它将完全丢弃xml的偏移量,以支持指定的时区。

1 个答案:

答案 0 :(得分:0)

如果您没有在XML中指定时区,则无法猜测它是否为DST(例如GMT + 2:00是柏林的DST,但GMT + 2:00是不是在基辅进行DST,以便程序选择哪个时区?)。

因此,如果你想要DST,你需要提供时区,无论是用XML还是像上面那样:xmlGregorianCalendarDate.toGregorianCalendar(timeZone).getTime()