-->
Skip to main content

Convert LocalDateTime to XmlGregorianCalendar in Java [2021]

Convert LocalDateTime to XMLGregorianCalendar  in Java [2021] 

We can convert LocalDateTime to XMLGregorianCalendar in java 
  • Using DatatypeFactory.newInstance().newXMLGregorianCalendar(gregorianCalendar) method which takes GregorianCalendar instance as input parameter.

convert LocalDateTime to XMLGregorianCalendar

Here is a brief intro about LocalDateTime and XMLGregorianCalendar class.

LocalDateTime

  • LocalDateTime is an instance of date-time without a time-zone in the ISO-8601 calendar system, such as 2007-12-03T10:15:30.
  • LocalDateTime is an immutable date-time object that represents a date-time, often viewed as a year-month-day-hour-minute-second.

XMLGregorianCalendar

  • It is a Representation for W3C XML Schema 1.0 date/time datatypes.These datatypes are normatively defined in W3C XML Schema 1.0 Part 2, Section 3.2.7-14.
  • The XML Schema standard defines clear rules for specifying dates in XML format.
We'll see now how to convert from LocalDateTime to XMLGregorianCalendar. Let’s dive in..

Convert LocalDateTime to XMLGregorianCalendar

In order to generate a new instance of XMLGregorianCalendar, 
we use a DataTypeFactory from the javax.xml.datatype package.

Let's create an instance of LocalDateTime first
 //Creating LocalDateTime instance
 LocalDateTime currentDateTime = LocalDateTime.now();
 System.out.println("LocalDateTime format : " + currentDateTime);
 // 2020-07-12T13:23:16.906 

We have created the LocalDateTime instance using now() method of LocalDateTime, so now our LocalDateTime instance is ready. 

We will now create an instance of XMLGregorianCalendar from this LocalDateTime instance.

 //Creating ZonedDateTime instance
 ZonedDateTime zoneDateTime = 
 ZonedDateTime.of(currentDateTime, ZoneId.systemDefault());

 //Creating GregorianCalendar instance
 GregorianCalendar gregorianCalendar = 
 GregorianCalendar.from(zoneDateTime);

 //Creating XMLGregorianCalendar instance
 XMLGregorianCalendar xmlGregorianCalendar =
 DatatypeFactory.newInstance()
    .newXMLGregorianCalendar(gregorianCalendar);

 System.out.println("XMLGregorianCalendar format : " 
    + xmlGregorianCalendar);
 //2020-07-12T13:23:16.906+05:30

As we have done the conversion of LocalDateTime instance to XMLGregorianCalendar.

In this code snippet conversion of LocalDateTime to XMLGregorianCalendar takes place in three steps
  • At first step created an instance of ZonedDateTime from LocalDateTime instance
  • At second step created an instance of GregorianCalender from ZonedDateTime instance. 
  • and finally at the third step created an instance of XMLGregorianCalendar using DatatypeFactory class newXMLGregorianCalendar method which takes GregorianCalender instance as an input parameter. DatatypeFactory.newInstance() method throws DatatypeConfigurationException.

Example :

 import java.time.LocalDateTime;
 import java.time.ZoneId;
 import java.time.ZonedDateTime;
 import java.util.GregorianCalendar;

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

 public class LocalDateTimetoXmlGregorianCalendar {
   public static void main(String[] args) throws DatatypeConfigurationException {
     
     //Creating LocalDateTime instance
     LocalDateTime currentDateTime = LocalDateTime.now();
     System.out.println("LocalDateTime format : " + currentDateTime); // 2020-07-12T13:23:16.906
	
     //Creating ZonedDateTime instance
     ZonedDateTime zoneDateTime =
     ZonedDateTime.of(currentDateTime, ZoneId.systemDefault());
	
     //Creating GregorianCalendar instance
     GregorianCalendar gregorianCalendar =
     GregorianCalendar.from(zoneDateTime);
		
     //Creating XMLGregorianCalendar instance
     XMLGregorianCalendar xmlGregorianCalendar =
     DatatypeFactory.newInstance()
	.newXMLGregorianCalendar(gregorianCalendar);
		
     System.out.println("XMLGregorianCalendar format : " + xmlGregorianCalendar);
     //2020-07-12T13:23:16.906+05:30
   }
 }

Output:

LocalDateTime format : 2020-07-12T13:25:27.346
XMLGregorianCalendar format : 2020-07-12T13:25:27.346+05:30

Conclusion:

In this quick tutorial, we have covered how we can convert LocalDateTime to XMLGregorianCalendar instance.

Thanks for reading this tutorial so far. If you like this tutorial then please share it with your friends and colleagues. If you have any questions, doubts, suggestions, or feedback then please drop a comment and I'll try to answer your question.

Happy Learning!!!

More Conversion example you may like

References:

Comments