Статьи

Преобразование типов данных в Java: XMLGregorianCalendar в java.util.Date / java.util.Date в XMLGregorianCalendar

package singz.test;

import java.util.Date;
import java.util.GregorianCalendar;

import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;

/**
* A utility class for converting objects between java.util.Date and
* XMLGregorianCalendar types
*
*/
public class XMLGregorianCalendarConversionUtil {

// DatatypeFactory creates new javax.xml.datatype Objects that map XML
// to/from Java Objects.
private static DatatypeFactory df = null;

static {
try {
df = DatatypeFactory.newInstance();
} catch(DatatypeConfigurationException e) {
throw new IllegalStateException(
"Error while trying to obtain a new instance of DatatypeFactory", e);
}
}

// Converts a java.util.Date into an instance of XMLGregorianCalendar
public static XMLGregorianCalendar asXMLGregorianCalendar(java.util.Date date) {
if(date == null) {
return null;
} else {
GregorianCalendar gc = new GregorianCalendar();
gc.setTimeInMillis(date.getTime());
return df.newXMLGregorianCalendar(gc);
}
}

// Converts an XMLGregorianCalendar to an instance of java.util.Date
public static java.util.Date asDate(XMLGregorianCalendar xmlGC) {
if(xmlGC == null) {
return null;
} else {
return xmlGC.toGregorianCalendar().getTime();
}
}

public static void main(String[] args) {
Date currentDate = new Date(); // Current date

// java.util.Date to XMLGregorianCalendar
XMLGregorianCalendar xmlGC = XMLGregorianCalendarConversionUtil.asXMLGregorianCalendar(
currentDate);
System.out.println(
"Current date in XMLGregorianCalendar format: " + xmlGC.toString());

// XMLGregorianCalendar to java.util.Date
System.out.println(
"Current date in java.util.Date format: " +
XMLGregorianCalendarConversionUtil.asDate(xmlGC).toString());
}
}

Зачем нам нужен XMLGregorianCalendar?

Архитектура Java для привязки XML (JAXB) позволяет разработчикам Java отображать классы Java в представления XML. JAXB предоставляет две основные функции: возможность маршалировать объекты Java в XML и обратное, то есть демаршалировать XML обратно в объекты Java .

В привязках типов данных по умолчанию, т. Е. Сопоставления типов данных XML-схемы (XSD) с типами данных Java в JAXB, следующие типы в XML-схеме (в основном используются в определении веб-служб) — xsd: dateTime, xsd: time, xsd: date и так на карте к типу Java javax.xml.datatype.XMLGregorianCalendar .

 

От http://singztechmusings.in/datatype-conversion-in-java-xmlgregoriancalendar-to-java-util-date-java-util-date-to-xmlgregoriancalendar/