将JAXBElement <XMLGregorianCalendar>转换为OffsetDateTime

时间:2019-08-11 07:10:56

标签: java datetime xmlgregoriancalendar

我正在尝试将JAXBElement-XMLGregorianCalendar转换为offsetDateTime。我能够做到这一点,但我想将日期转换为特定格式。

我正在转换的代码:calendarValue是2016-03-25T00:00:00 + 05:30,但我需要将类型转换为offsetDateTime,所以我在转换以下进行操作

calendarValue.toGregorianCalendar().getTime().toInstant().atOffset(ZoneOffset.UTC)

作为响应,我将转换后的值转换为:2016-03-24T18:30:00Z,而我希望将转换后的值转换为:2016-03-25T00:00:00 + 05:30。

任何人都可以帮助获得所需的dateTime转换。

1 个答案:

答案 0 :(得分:1)

tl; dr

:

详细信息

:eof旧对象转换为另一个旧类myXMLGregorianCalendar .toGregorianCalendar() .toZonedDateTime() .format( DateTimeFormat.ISO_OFFSET_DATE_TIME ) 作为中间步骤。

XMLGregorianCalendar

转换为现代班。

GregorianCalendar

GregorianCalendar gc = myXMLGregorianCalendar.toGregorianCalendar() ; 对象可以满足您的需求。

以所需的格式生成表示当前时刻值的字符串,尽管不幸的是,格式会掩盖时区的名称,这是有价值的信息。

ZonedDateTime zdt = gc.toZonedDateTime() ;

但是,如果您希望将同一时刻调整为UTC,只需提取ZonedDateTime

String output = zdt.format( DateTimeFormat.ISO_OFFSET_DATE_TIME ) ;

如果您需要更灵活的Instant类,请应用偏移量。

Instant instant = zdt.toInstant() ;