我有一个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的偏移量,以支持指定的时区。
答案 0 :(得分:0)
如果您没有在XML中指定时区,则无法猜测它是否为DST(例如GMT + 2:00是柏林的DST,但GMT + 2:00是不是在基辅进行DST,以便程序选择哪个时区?)。
因此,如果你想要DST,你需要提供时区,无论是用XML还是像上面那样:xmlGregorianCalendarDate.toGregorianCalendar(timeZone).getTime()