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(); } }
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