Jumat, 27 Juni 2014

How to convert XMLGregorianCalendar to Date to XMLGregorianCalendar in Java - Example Tutorial






There are several ways to convert XMLGregorianCalendar to Date in Java.
You can convert
XMLGregorianCalendar to either java.util.Date or java.sql.Date based upon
your need. JAXB (Java API/Architecture for XML
Bindings)
is
a popular framework to create XML documents from Java
Objects and Java objects from XML files. JAXB also helps to create Java classes
from XML Schema file (.XSD file). By default JAXB maps XSD data type
xs:date, xs:time and xs:dateTime to XMLGregorianCalendar in Java,
but you can configure XJC to create
java.util.Date objects
instead of
javax.xml.datatype.XMLGregorianCalendar. Since java.util.Date
is
most popular way of dealing with date and time in Java, we often need to
convert
XMLGregorianCalendar instance to Date instance
in Java. Thankfully by using Java API, we can easily do this conversion of
XMLGregorianCalendar to Date and Date to XMLGregorianCalendar in Java. By
the way, It's good to remember that XML Schema has three different types which
can represent either date, time or both, while
java.util.Date contains
date and time information together. In this Java and XML tutorial, we will see
example of converting
XMLGregorianCalendar to Date and inverse in Java
.




XMLGregorianCalendar to Date to
XMLGregorianCalendar



Convert XMLGregorianCalendar to Date to XMLGregorianCalendar example Java tutorialHere is a Java
program
, which converts
XMLGregorianCalendar instances
to
java.util.Date instances. We have two method, one which takes XMLGregorianCalendar and return
java.util.Date, and other which takes Date and return
XMLGregorianCalendar.





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;





/**


 * Java program to convert
XMLGregorianCalendar to Date and inverse i.e. java.util.Date


 * to XMLGregorianCalendar.
If you are using XJC to create Java classes from XML Schema


 * or XSD file, By default
JAXB map XSD data types xs:date, xs:time and xs:dateTime


 * to XMLGregorianCalendar
in Java.


 *


 * @author Javin Paul


 */


public class XMLCalendarToDate {





    public static void main(String args[]) {


       Date today = new Date();


     


       //Converting
date to XMLGregorianCalendar in Java


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


     


    }


  


    /*


     * Converts
java.util.Date to javax.xml.datatype.XMLGregorianCalendar


     */


    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) {


            Logger.getLogger(StringReplace.class.getName()).log(Level.SEVERE, null, ex);


        }


        return xmlCalendar;


    }


  


    /*


     * Converts
XMLGregorianCalendar to java.util.Date in Java


     */


    public static Date toDate(XMLGregorianCalendar calendar){


        if(calendar == null) {


            return null;


        }


        return calendar.toGregorianCalendar().getTime();


    }


  


}





Output:


XMLGregorianCalendar from Date in Java           : 2013-01-27T23:45:23.322-04:30


java.util.Date from XMLGregorianCalendar in Java : Sun Jan 27 23:45:23 VET 2013








Important
point to note:


Few points which is worth knowing while converting XMLGregorianCalendar
to Date in Java.





1) XML Schema has different data type for date, time and dateTime e.g. xsd:date, xsd:time and xsd:dateTime, By
default JAXB XJC maps all these to
XMLGregorianCalendar in Java.





2) It's possible to customize XJC to generate Date
instead of
XMLGregorianCalendar for xs:date, xs:time and xs:dateTime data
types. I will write about that later, but you can still explores this option.





3) While creating instance of GregorianCalendar, its
better to use constructor
instead calling
GregorianCalendar.getInstance() because
it's similar to
Calendar.getInstance() and can return different
type of Calendar based upon Locale settings e.g.
BuddhistCalendar for Thai
locale or
JapaneseImperialCalendar for Japan.
By using constructor, you also removes type casting because
getInstance() return
instance of
java.util.Calendar, and prevents ClassCastException
in Java
.





That's all on How to convert XMLGregorianCalendar to Date in Java and
Date to XMLGregorianCalendar
. Sometimes, it also helps to keep things
simply by using formatted
String
to represent date and time in XML files and later convert
String to Date in Java program
.






























Source:http://javarevisited.blogspot.com/2013/02/convert-xmlgregoriancalendar-to-date-xmlgregoriancalendar-java-example-tutorial.html

Tidak ada komentar:

Posting Komentar