Basil Bourque
Basil Bourque

Reputation: 340118

Convert GregorianCalendar to XMLGregorianCalendar

While working with legacy code not yet updated for the modern java.time classes, I need to convert a ZonedDateTime to XMLGregorianCalendar. So I thought I'd go by way of GregorianCalendar, calling GregorianCalendar.from( ZonedDateTime ).

I see methods for going from XMLGregorianCalendar to GregorianCalendar: XMLGregorianCalendar::toGregorianCalendar.

➥ I need the opposite, going from GregorianCalendar to XMLGregorianCalendar.

Upvotes: 0

Views: 5746

Answers (2)

user9173567
user9173567

Reputation:

Another way is the following:

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

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

Upvotes: 1

Basil Bourque
Basil Bourque

Reputation: 340118

DatatypeFactory.newInstance().newXMLGregorianCalendar( … )

While neither the XMLGregorianCalendar nor GregorianCalendar classes offer the conversion method you need, there is a workaround.

A javax.xml.datatype.DatatypeFactory object can convert from GregorianCalendar to XMLGregorianCalendar by calling its newXMLGregorianCalendar method.

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

To complete the entire cascade you mentioned, from java.time.ZonedDateTime to GregorianCalendar to XMLGregorianCalendar.

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

Upvotes: 1

Related Questions