有没有一种简单的方法将java.time.ZonedDateTime转换为XMLGregorianCalendar?
也许我需要一些中间步骤,比如将ZonedDateTime转换为java.util.Date,但这会使代码变得很混乱。
这个问题出现在JAX-WS web服务中,那里的日期时间被传递为XMLGregorianCalendar。
目前我认为这是最直接的方法:
ZonedDateTime now = ZonedDateTime.now();
GregorianCalendar gregorianCalendar = GregorianCalendar.from(now);
XMLGregorianCalendar xmlGregorianCalendar = DatatypeFactory.newInstance().newXMLGregorianCalendar(gregorianCalendar);
ZonedDateTime.now
中省略可选的 ZoneId
参数时,JVM 会隐式地分配当前默认的时区。我建议始终明确指定您期望的时区。例如:ZonedDateTime.now( ZoneId.of( "America/Montreal" ) )
。这里的其余答案是完全正确的。 - Basil Bourque
yyyy-MM-dd
日期格式即可。由于Java JAX-WS将日期映射到XMLGregorianCalendar而不是Date,即使您在WSDL数据类型中定义了它。 - Omoro