2016-06-28 57 views
0

我有一個xml文件,它有一個表示時間戳的字段。時間字段是可選的,因此沒有組合的日期時間字段。使用JAXB我們將這個字段映射到我們的java模型中的XMLGregorianCalendar。如何正確地將xs:time轉換爲java日期

現在我的問題是如何將這個時間轉換爲正確的當地時間(比如說歐洲/柏林夏令時)在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

你有日期字段? – vikingsteve

回答

0

如果您沒有在XML中指定時區,則無法猜測它是否爲DST(例如,GMT + 2:00是柏林的DST,但GMT + 2:00是而不是 DST在基輔,哪個時區應選擇程序?)。

所以,如果你想DST您需要提供時區,無論是在XML或者就像你做上面:xmlGregorianCalendarDate.toGregorianCalendar(timeZone).getTime()