Java 8 – How to convert ZonedDateTime to GregorianCalendar and vice-versa ?

In this article, we will learn how to convert ZonedDateTime to GregorianCalendar in Java 1.8 version and vice-versa

ZonedDateTime to GregorianCalendar conversion & vice-versa :

  • There are 3 new methods introduced in Java 1.8 version for GregorianCalendar class, those are
    1. from(ZonedDateTime) – This static method obtains an instance of GregorianCalendar with the default locale from a ZonedDateTime object
    2. toZonedDateTime() – This method converts invoking GregorianCalendar object to a ZonedDateTime that represents the same point on the time-line as that of GregorianCalendar object
    3. getCalendarType() – Returns "gregory" as the calendar type

1. Convert ZonedDateTime to GregorianCalendar :

  • GregorianCalendar.from() method accepts ZonedDateTime as input-argument and returns GregorianCalendar
  • Converted GregorianCalendar will have,
    • Date & Time & Zone parts remain same as that of ZonedDateTime
  • In short, ZonedDateTime -> GregorianCalendar
  • Lets see an example for conversion of ZonedDateTime to GregorianCalendar in the below illustration

ConvertZonedDateTimeToGregorianCalendar.java

package in.bench.resources.java8.zoneddatetime.examples;

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

public class ConvertZonedDateTimeToGregorianCalendar {

	public static void main(String[] args) {

		// 1. get Zoned Date/time
		ZonedDateTime zonedDateTime = ZonedDateTime.now();
		System.out.println("Zoned Date/time is :- \n" 
				+ zonedDateTime);


		// 2. get system default zone
		ZoneId zoneId = ZoneId.systemDefault();
		System.out.println("\nDefault System Zone is :- \n" 
				+ zoneId);


		// 3. convert ZonedDateTime -> GregorianCalendar 
		GregorianCalendar gregorianCalendar = GregorianCalendar
				.from(zonedDateTime);


		// 4. print to console
		System.out.print("\nConversion of ZonedDateTime to GregorianCalendar is :- \n"
				+ gregorianCalendar.getTime());
	}
}

Output:

Zoned Date/time is :- 
2022-08-13T17:15:46.983373200+05:30[Asia/Calcutta]

Default System Zone is :- 
Asia/Calcutta

Conversion of ZonedDateTime to GregorianCalendar is :- 
Sat Aug 13 17:15:46 IST 2022

2. Convert GregorianCalendar to ZonedDateTime :

  • Instantiate GregorianCalendar object for conversion to ZonedDateTime
    • Convert GregorianCalendar to ZonedDateTime using toZonedDateTime() method
  • In short, GregorianCalendar -> ZonedDateTime
  • Lets see an example for conversion of GregorianCalendar to ZonedDateTime in the below illustration

ConvertGregorianCalendarToZonedDateTime.java

package in.bench.resources.java8.zoneddatetime.examples;

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

public class ConvertGregorianCalendarToZonedDateTime {

	public static void main(String[] args) {

		// 1. Instantiate GregorianCalendar
		GregorianCalendar gregorianCalendar = new GregorianCalendar();
		System.out.println("Current Date/Time is :- \n" 
				+ gregorianCalendar.getTime());


		// 2. get system default zone
		ZoneId zoneId = ZoneId.systemDefault();
		System.out.println("\nDefault System Zone is :- \n" 
				+ zoneId);


		// 3. convert GregorianCalendar -> ZonedDateTime
		ZonedDateTime zonedDateTime  = gregorianCalendar.toZonedDateTime();


		// 4. print to console
		System.out.print("\nConversion of GregorianCalendar to ZonedDateTime is :- \n"
				+ zonedDateTime);
	}
}

Output:

Current Date/Time is :- 
Sat Aug 13 17:16:01 IST 2022

Default System Zone is :- 
Asia/Calcutta

Conversion of GregorianCalendar to ZonedDateTime is :- 
2022-08-13T17:16:01.906+05:30[Asia/Calcutta]

Related Articles:

References:

Happy Coding !!
Happy Learning !!

Java 8 – How to convert ZonedDateTime to XMLGregorianCalendar and vice-versa ?
Java 8 – How to convert ZonedDateTime to Calendar and vice-versa ?