将 GregorianCalendar 转换为 XMLGregorianCalendar

Convert GregorianCalendar to XMLGregorianCalendar

在使用尚未针对现代 java.time 类 更新的遗留代码时,我需要转换 ZonedDateTime to XMLGregorianCalendar. So I thought I'd go by way of GregorianCalendar, calling GregorianCalendar.from( ZonedDateTime )

我看到了从 XMLGregorianCalendarGregorianCalendar 的方法:XMLGregorianCalendar::toGregorianCalendar

➥ 我需要相反的东西,从 GregorianCalendarXMLGregorianCalendar

DatatypeFactory.newInstance().newXMLGregorianCalendar( … )

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

一个javax.xml.datatype.DatatypeFactory object can convert from GregorianCalendar to XMLGregorianCalendar by calling its newXMLGregorianCalendar方法。

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

完成你提到的整个级联,从java.time.ZonedDateTimeGregorianCalendar再到XMLGregorianCalendar

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

另一种方式如下:

import com.sun.org.apache.xerces.internal.jaxp.datatype.XMLGregorianCalendarImpl;
    

GregorianCalendar calendar = new GregorianCalendar();
XMLGregorianCalendar xmlGregorianCalendar = new XMLGregorianCalendarImpl(calendar);