当前位置: 首页 > 知识库问答 >
问题:

将JAXB element < XMLGregorianCalendar >转换为OffsetDateTime

须彭亮
2023-03-14

我正在尝试将JAXBElement-XMLGregorianCalendar转换为offsetDateTime。我可以这样做,但我想以特定格式转换日期。

代码我用于转换:日历值是2016-03-25T00:00:00 05:30,但我需要隐蔽类型以偏移Date时间所以我正在做下面的转换

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

作为响应,我在转换后得到的值:2016-03-24T18:30:00Z,而我想要转换后的值为:2016-03-25T00:00:00 05:30。

任何人都可以帮助获得所需的日期时间转换。

共有1个答案

充昌勋
2023-03-14
myXMLGregorianCalendar
.toGregorianCalendar()
.toZonedDateTime()
.format( 
    DateTimeFormatter.ISO_OFFSET_DATE_TIME 
)

作为中间步骤,将一个< code > XMLGregorianCalendar 遗留对象转换为另一个遗留类< code>GregorianCalendar。

GregorianCalendar gc = myXMLGregorianCalendar.toGregorianCalendar() ;

转换到现代阶级。

ZonedDateTime zdt = gc.toZonedDateTime() ;

ZonedDateTime对象可能满足您的需要。

生成一个以所需格式表示当前时刻值的字符串,但遗憾的是,您的格式掩盖了时区的名称,而时区是有价值的信息。

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

但是,如果您希望看到根据UTC调整的同一时刻,只需提取一个< code>Instant。

Instant instant = zdt.toInstant() ;

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

OffsetDateTime odt = instant.atOffset( ZoneOffset.UTC ) ;
 类似资料:
  • 我使用JAXB对从服务器获得的XML消息进行UN/Marshing处理。通常,我在字段中获取XMLGregorianCalendar值,这些字段在描述XSD文件中被defind为xs:datetime,因此到XMLGregorianCalendar的转换是由JAXB自动完成的。

  • 问题内容: 在Java 8和Java 8 之间进行转换的最佳方法是什么? 问题答案: 从转换为: 转换回来比较简单:

  • 问题内容: 在测试可在系统之间映射日期时间类型的Web服务时,我注意到在公历开始时间之前发送任何日期会导致转换为最终类型时准确性下降,最终结果总是在该范围内稍早几天。 我将问题缩小到确切的范围,但是我仍然无法弄清 为什么 要这样进行转换,从文档中可以看出,儒略历用于公历开始前的日期时间:1582年10月15日。 问题行位于从开始到第78行: 当时间从第86行开始时:时间比原定时间提前了2天,即1月

  • 问题内容: 我已经写了这个功能: 当我通过日期以及获取输出日期作为 我要去哪里的时候?还做什么,如果我想只得到和 任何帮助表示赞赏 问题答案: 找到以下解决方案…。发布它,因为它也可以帮助其他人:) 输出: 2014-04-24T11:15:00.000 + 02:00

  • 问题内容: 我正在寻找在两个方向上在java.util.Date和javax.xml.datatype.XMLGregorianCalendar之间进行转换的简单方法。 这是我现在正在使用的代码 : 有没有更简单的事情,例如我忽略的一些API调用? 在标准XML日期/时间和Java日期对象之间进行转换似乎是一项非常常规的任务,令我感到惊讶的是,我完全必须编写这段代码。 有什么建议? 注意: 我的J

  • 我使用Spring Boot调用Web服务。 我的配置类如下: 我打电话给服务部如下: 我发现以下错误: 如何解组webservice的输出?????如何设置响应的解组器??