如何将java.time.ZonedDateTime转换为XMLGregorianCalendar?

Mik*_*sky 13 java datetime jax-ws java-8 java-time

有没有什么简短的方法可以将java.time.ZonedDateTime转换为XMLGregorianCalendar?

也许我需要一些中间步骤,比如将ZonedDateTime转换为java.util.Date,但这会使代码过于混乱.

问题出现在JAX-WS Web服务中,datetime作为XMLGregorianCalendar传递.

Mik*_*sky 25

目前,我认为这是最直接的方式:

ZonedDateTime now = ZonedDateTime.now();
GregorianCalendar gregorianCalendar = GregorianCalendar.from(now); 
XMLGregorianCalendar xmlGregorianCalendar = DatatypeFactory.newInstance().newXMLGregorianCalendar(gregorianCalendar);
Run Code Online (Sandbox Code Playgroud)

  • 致其他读者:请注意此处涉及的时区。当“ZonedDateTime.now”中省略可选的“ZoneId”参数时,会隐式分配 JVM 当前的默认时区。我建议始终明确指定您想要/预期的时区。示例: `ZonedDateTime.now( ZoneId.of( "美国/蒙特利尔" ) )`。这里答案的其余部分是完全正确的。 (2认同)