Convertir XMLGregorianCalendar a la fecha en Java

XMLGregorianCalendar se puede transformar en java.util.Date o java.sql.Date según los requisitos. JAXB (Java API/XML Bindings Architecture) es un marco común para crear documentos XML a partir de objetos Java y archivos XML a partir de objetos Java. JAXB también permite que el archivo de esquema XML construya clases Java (archivo .XSD). JAXB asigna xs:date, xs:time y xs:dateTime a XMLGregorianCalendar en Java de forma predeterminada, pero puede personalizar XJC para construir objetos java.util.Date en lugar de javax.xml.datatype.xmlGregorianCalendar.

Dado que java.util.Date es la forma más común de manejar la fecha y la hora de Java, siempre debemos convertir la instancia de XMLGregorianCalendar en la instancia de Java Date.

Usando la API de Java, podemos convertir fácilmente XMLGregorianCalendar a XMLGregorianCalendar Fecha y Fecha en Java.

Por cierto, es bueno tener en cuenta que hay tres formas diferentes de esquema XML que pueden representar la fecha, la hora o ambas, mientras que java.util.Date incluye detalles sobre la fecha y la hora juntas.

Aquí hay un programa Java, que convierte XMLGregorianCalendar a Date. Así que tomaremos XMLGregorianCalendar y devolveremos java.util.Date.

Código:

Java

// Convert XMLGregorianCalendar to Date in Java
import java.io.*;
import java.util.*;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;
  
class GFG {
    public static void main(String[] args)
    {
        Date today = new Date();
  
        // Converting date to XMLGregorianCalendar
        XMLGregorianCalendar xml
            = toXMLGregorianCalendar(today);
        System.out.println(
            "XMLGregorianCalendar from Date in Java      : "
            + xml);
  
        // Converting XMLGregorianCalendar to java.util.Date
        // in Java
        Date date = toDate(xml);
        System.out.println(
            "java.util.Date from XMLGregorianCalendar in Java : "
            + date);
    }
  
    public static XMLGregorianCalendar
    toXMLGregorianCalendar(Date date)
    {
        GregorianCalendar gCalendar
            = new GregorianCalendar();
        gCalendar.setTime(date);
        XMLGregorianCalendar xmlCalendar = null;
        try {
            xmlCalendar
                = DatatypeFactory.newInstance()
                      .newXMLGregorianCalendar(gCalendar);
        }
        catch (DatatypeConfigurationException ex) {
            System.out.println(ex);
        }
        return xmlCalendar;
    }
  
    public static Date toDate(XMLGregorianCalendar calendar)
    {
        if (calendar == null) {
            return null;
        }
        return calendar.toGregorianCalendar().getTime();
    }
}
Producción

XMLGregorianCalendar from Date in Java      : 2021-02-22T17:10:28.732Z
java.util.Date from XMLGregorianCalendar in Java : Mon Feb 22 17:10:28 UTC 2021

Así que ahora los puntos importantes sobre XMLGregorianCalendar y la fecha:

  • XML Schema tiene varios tipos de datos de fecha, hora y fecha y hora, por ejemplo, xsd: fecha, xsd: hora y xsd: fecha y hora, todos los cuales están asignados a XMLGregorianCalendar en Java de forma predeterminada con JAXB XJC.
  • Al construir un caso de GregorianCalendar, es mejor usar un constructor en lugar de llamar a GregorianCalendar.getInstance() ya que es similar a Calendar.getInstance() y puede devolver diferentes tipos de calendario según la configuración local, por ejemplo, Calendario budista local tailandés o Imperial japonés. Calendario Imperial de Japón. También excluye el encasillamiento cuando usa un constructor, ya que getInstance() devuelve la instancia java.util.Calendar y evita ClassCastException en Java.
  • Para los tipos de datos xs:date, xs:time y xs:dateTime, puede configurar XJC para generar Fecha en lugar de XMLGregorianCalendar. Escribiré sobre eso más adelante, pero esta opción aún se puede explorar.

Se trata de cómo convertir XMLGregorianCalendar a Java Date y XMLGregorianCalendar Date.

Publicación traducida automáticamente

Artículo escrito por kaaruni1124 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *