HowToDoInJava

  • Python
  • Java
  • Spring Boot
  • Dark Mode
Home / Java / Java Date Time / Convert XMLGregorianCalendar to date time – Format to string

Convert XMLGregorianCalendar to date time – Format to string

Learn to convert XMLGregorianCalendar to Date class or string value. Also learn to apply timezone changes and daylight saving effects as well.

Table of Contents

1. Convert XMLGregorianCalendar to Date or String
2. Adjust between timezones
3. Apply daylight saving effect

Convert XMLGregorianCalendar to Date or String

Java program to convert XMLGregorianCalendar to Date object and format XMLGregorianCalendar to string value.

public class Main {
	
	public static void main(String[] args) throws DatatypeConfigurationException 
	{
		GregorianCalendar cal = new GregorianCalendar();

		//Set todays date
		cal.setTime(new Date());
		XMLGregorianCalendar xCal = DatatypeFactory.newInstance().newXMLGregorianCalendar(cal);
        
        System.out.println(convertXmlGregorianToString(xCal));
	}

	public static String convertXmlGregorianToString(XMLGregorianCalendar xc) 
	{
		DateFormat df = new SimpleDateFormat("MM/dd/yyyy hh:mm a z");

		GregorianCalendar gCalendar = xc.toGregorianCalendar();

		//Converted to date object
		Date date = gCalendar.getTime();

		//Formatted to String value
		String dateString = df.format(date);

		return dateString;
	}
}

Program Output.

04/11/2017 12:21 PM IST

2. XMLGregorianCalendar to Date with timezone

2.1. Timezone adjusted local date time

Adjust XMLGregorianCalendar date from default timezone to GMT timezone.

public class Main {
	
	public static void main(String[] args) throws DatatypeConfigurationException {
		GregorianCalendar cal = new GregorianCalendar();
		cal.setTime(new Date());
		XMLGregorianCalendar xCal = DatatypeFactory.newInstance().newXMLGregorianCalendar(cal);
        
        System.out.println(convertXmlGregorianToString(xCal));
	}

	public static String convertXmlGregorianToString(XMLGregorianCalendar xc) 
	{
		TimeZone gmtTimeZone = TimeZone.getTimeZone("GMT");
		TimeZone fromTimeZone = TimeZone.getDefault();
		GregorianCalendar gCalendar = xc.toGregorianCalendar();
		DateFormat df = new SimpleDateFormat("MM/dd/yyyy hh:mm a z");
		Date date = adjustToTimezone(gCalendar.getTime(), fromTimeZone, gmtTimeZone);
		String dateString = df.format(date);
		return dateString;
	}

	public static Date adjustToTimezone(Date date, TimeZone fromZone, TimeZone toZone) 
	{
		Date adjustedToTimezone = new Date(date.getTime() + toZone.getRawOffset() - fromZone.getRawOffset());
		return adjustedToTimezone;
	}
}

Program Output.

04/11/2017 07:08 AM IST

2.2. Date time formatted to differnt timezone

Please note that converted time’s timezone is printed as IST, though its value is adjusted to GMT. If you want to print the timezone as GMT then you will need to set timezone is DateFormat instance.

public static String convertXmlGregorianToString(XMLGregorianCalendar xc) 
{
	GregorianCalendar gCalendar = xc.toGregorianCalendar();
	
	DateFormat df = new SimpleDateFormat("MM/dd/yyyy hh:mm a z");
	df.setTimeZone(TimeZone.getTimeZone("GMT"));
	
	String dateString = df.format(gCalendar.getTime());
	return dateString;
}

Program Output.

04/11/2017 07:08 AM GMT

3. XMLGregorianCalendar with daylight saving effect

To check whether current time or adjusted time falls under DST (daylight saving time), then you might want to handle those changes as well.

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.TimeZone;

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

public class Main {
	
	public static void main(String[] args) throws DatatypeConfigurationException {
		GregorianCalendar cal = new GregorianCalendar();
		cal.setTime(new Date());
		XMLGregorianCalendar xCal = DatatypeFactory.newInstance().newXMLGregorianCalendar(cal);
        
        System.out.println(convertXmlGregorianToString(xCal));
	}

	public static String convertXmlGregorianToString(XMLGregorianCalendar xc) 
	{
		TimeZone gmtTimeZone = TimeZone.getTimeZone("GMT");
		TimeZone fromTimeZone = TimeZone.getDefault();
		GregorianCalendar gCalendar = xc.toGregorianCalendar();
		DateFormat df = new SimpleDateFormat("MM/dd/yyyy hh:mm a z");
		Date date = adjustToTimezone(gCalendar.getTime(), fromTimeZone, gmtTimeZone);
		String dateString = df.format(date);
		return dateString;
	}

	public static Date adjustToTimezone(Date date, TimeZone fromZone, TimeZone toZone) 
	{
		Date adjustedToTimezone = new Date(date.getTime() + toZone.getRawOffset() - fromZone.getRawOffset());
		// Is the adjusted date in Daylight savings?
		if (fromZone.inDaylightTime(adjustedToTimezone) != toZone.inDaylightTime(adjustedToTimezone)) {
			adjustedToTimezone = new Date(adjustedToTimezone.getTime() + toZone.getDSTSavings() - fromZone.getDSTSavings());
		}
		return adjustedToTimezone;
	}
}

Program Output.

04/11/2017 07:08 AM IST

Drop me your questions in comments section.

Happy Learning !!

Was this post helpful?

Let us know if you liked the post. That’s the only way we can improve.
TwitterFacebookLinkedInRedditPocket

About Lokesh Gupta

A family guy with fun loving nature. Love computers, programming and solving everyday problems. Find me on Facebook and Twitter.

Comments are closed on this article!

Search Tutorials

Java Date Time Tutorial

  • Java – Date Time APIs
  • Java – Date Parsing
  • Java – Date Formatting
  • Java 8 – LocalDate
  • Java 8 – LocalTime
  • Java 8 – LocalDateTime
  • Java 8 – ZonedDateTime
  • Java 8 – Period
  • Java 8 – DateTimeFormatter
  • Java 8 – TemporalAdjusters
  • Java 8 – TemporalQuery
  • Java 8 – DayOfWeek
  • Java – Date
  • Java – Locale

Java Tutorial

  • Java Introduction
  • Java Keywords
  • Java Flow Control
  • Java OOP
  • Java Inner Class
  • Java String
  • Java Enum
  • Java Collections
  • Java ArrayList
  • Java HashMap
  • Java Array
  • Java Sort
  • Java Clone
  • Java Date Time
  • Java Concurrency
  • Java Generics
  • Java Serialization
  • Java Input Output
  • Java New I/O
  • Java Exceptions
  • Java Annotations
  • Java Reflection
  • Java Garbage collection
  • Java JDBC
  • Java Security
  • Java Regex
  • Java Servlets
  • Java XML
  • Java Puzzles
  • Java Examples
  • Java Libraries
  • Java Resources
  • Java 14
  • Java 12
  • Java 11
  • Java 10
  • Java 9
  • Java 8
  • Java 7

Meta Links

  • About Me
  • Contact Us
  • Privacy policy
  • Advertise
  • Guest and Sponsored Posts

Recommended Reading

  • 10 Life Lessons
  • Secure Hash Algorithms
  • How Web Servers work?
  • How Java I/O Works Internally?
  • Best Way to Learn Java
  • Java Best Practices Guide
  • Microservices Tutorial
  • REST API Tutorial
  • How to Start New Blog

Copyright © 2020 · HowToDoInjava.com · All Rights Reserved. | Sitemap

  • Sealed Classes and Interfaces