在处理尚未为现代java.time类更新的旧代码时,我需要将ZonedDateTime转换为XMLGregorianCalendar。所以我想我会以GregorianCalendar的方式打电话给GregorianCalendar.from( ZonedDateTime )

我看到了从XMLGregorianCalendar转到GregorianCalendar的方法:XMLGregorianCalendar::toGregorianCalendar

need我需要相反的内容,从GregorianCalendar转到XMLGregorianCalendar

最佳答案

DatatypeFactory.newInstance().newXMLGregorianCalendar( … )

虽然XMLGregorianCalendarGregorianCalendar类都不提供您需要的转换方法,但是有一种解决方法。

javax.xml.datatype.DatatypeFactory对象可以通过调用其GregorianCalendar方法从XMLGregorianCalendar转换为newXMLGregorianCalendar

XMLGregorianCalendar xmlGregCal =
        DatatypeFactory
        .newInstance()
        .newXMLGregorianCalendar( gregCal )
;




要完成您提到的整个层叠,从java.time.ZonedDateTimeGregorianCalendarXMLGregorianCalendar

XMLGregorianCalendar xmlGregCal =
        DatatypeFactory
        .newInstance()
        .newXMLGregorianCalendar(
            GregorianCalendar
            .from(
                myZonedDateTime
            )
        )
;

09-09 17:59