Prerequisites : java.util.Locale, java.util.TimeZone, Calendar.get()
GregorianCalendar is a concrete subclass(one which has implementation of all of its inherited members either from interface or abstract class) of a Calendar that implements the most widely used Gregorian Calendar with which we are familiar.
java.util.GregorianCalendar vs java.util.Calendar
The major difference between GregorianCalendar and Calendar classes are that the Calendar Class being an abstract class cannot be instantiated. So an object of the Calendar Class is initialized as:
Calendar cal = Calendar.getInstance();
Here, an object named cal of Calendar Class is initialized with the current date and time in the default locale and timezone. Whereas, GregorianCalendar Class being a concrete class, can be instantiated. So an object of the GregorianCalendar Class is initialized as:
GregorianCalendar gcal = new GregorianCalendar();
Here, an object named gcal of GregorianCalendar Class is initialized with the current date and time in the default locale and timezone.
Fields defined :
GregorianCalendar Class defines two fields: AD : referring to the common era(anno Domini) BC : referring to before common era(Before Christ)
Constructors : There are several constructors for GregorianCalendar objects. Broadly classifying, constructors for GregorianCalendar either initialize the object with the user specified date and/or time in the default locale and time zone, or initialize the object with default date and time in the user specified locale and/or time zone. These are as follows:
| Constructor Signature | Description |
|---|---|
| GregorianCalendar() | initializes the object with the current date and time in the default locale and time zone |
| GregorianCalendar(int year, int month, int dayOfMonth) | initializes the object with the date-set passed as parameters in the default locale and time zone |
| GregorianCalendar(int year, int month, int dayOfMonth, int hours, int minutes) | initializes the object with the date and time-set passed as parameters in the default locale and time zone |
| GregorianCalendar(int year, int month, int dayOfMonth, int hours, int minutes, int seconds) | initializes the object with the date and more specific time-set passed as parameters in the default locale and time zone |
| GregorianCalendar(Locale locale) | initializes the object with the current date and time in the default time zone and the locale passed as parameters |
| GregorianCalendar(TimeZone timeZone) | initializes the object with the current date and time in the default locale and the time zone passed as parameters |
| GregorianCalendar(TimeZone timeZone, Locale locale) | initializes the object with the current date and time in the locale and the time zone passed as parameters |
Methods from(), toZonedDateTime(), getCalendarType() were introduced in JDK 8.
// Java Program to show that Calendar class with // default instantiation and GregorianCalendar class // with default constructor is basically the same as both // return the Gregorian Calender for the default // date, time, time zone and locale import java.util.Calendar; import java.util.GregorianCalendar; class CalendarGFG { public static void main(String[] args) { // Creating an object of Calendar Class Calendar cal = Calendar.getInstance(); /* Creating an object of GregorianCalendar Class */ GregorianCalendar gcal = new GregorianCalendar(); /* Displaying Current Date using Calendar Class */ System.out.println("Calendar date: " + cal.getTime()); /* Displaying Current Date using GregorianCalendar Class */ System.out.print("Gregorian date: " + gcal.getTime()); } // end of main function } // end of class |
Output:
Calendar date: Sat Apr 28 13:36:37 UTC 2018 Gregorian date: Sat Apr 28 13:36:37 UTC 2018
Example to demonstrate the usage of various constructors:
1. Using default constructor
// Java program to demonstrate simple GregorianCalendar // operations import java.util.Locale; import java.util.TimeZone; import java.util.Calendar; import java.util.GregorianCalendar; public class GregorianCalendarGFG { public static void main(String args[]) { // declaring an array to store month abbreviations String month[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; // declaring an array to store AM or PM String amPm[] = { "AM", "PM" }; /* Creating an object of GregorianCalendar class using default constructor*/ GregorianCalendar gcal = new GregorianCalendar(); // displaying the date, time, time zone and locale System.out.print("Date: " + month[gcal.get(Calendar.MONTH)] + " " + gcal.get(Calendar.DATE) + ", " + gcal.get(Calendar.YEAR) + "\n" + "Time: " + gcal.get(Calendar.HOUR) + ":" + gcal.get(Calendar.MINUTE) + ":" + gcal.get(Calendar.SECOND) + " " + amPm[gcal.get(Calendar.AM_PM)] + "\n" + "Time Zone: " + gcal.getTimeZone().getDisplayName() + "\n" + "Locale: " + Locale.getDefault().getDisplayName()); } // end of main function } // end of class |
Output:
Date: Apr 30, 2018 Time: 10:21:51 PM Time Zone: Coordinated Universal Time Locale: English (United States)
2. By passing year, month, dayOfMonth as parameters:
// Java program to demonstrate simple GregorianCalendar // operations import java.util.Locale; import java.util.TimeZone; import java.util.Calendar; import java.util.GregorianCalendar; public class GregorianCalendarGFG { public static void main(String args[]) { // declaring an array to store month abbreviations String month[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; // declaring an array to store AM or PM String amPm[] = { "AM", "PM" }; /* Creating an object of GregorianCalendar class by specifiying year, month and dayOfMonth */ GregorianCalendar gcal = new GregorianCalendar(2018, 3, 30); // displaying the date, time, time zone and locale System.out.print("Date: " + month[gcal.get(Calendar.MONTH)] + " " + gcal.get(Calendar.DATE) + ", " + gcal.get(Calendar.YEAR) + "\n" + "Time: " + gcal.get(Calendar.HOUR) + ":" + gcal.get(Calendar.MINUTE) + ":" + gcal.get(Calendar.SECOND) + " " + amPm[gcal.get(Calendar.AM_PM)] + "\n" + "Time Zone: " + gcal.getTimeZone().getDisplayName() + "\n" + "Locale: " + Locale.getDefault().getDisplayName()); } // end of main function } // end of class |
Output:
Date: Apr 30, 2018 Time: 0:0:0 AM Time Zone: Coordinated Universal Time Locale: English (United States)
3. By passing year, month, dayOfMonth, hourOfDay, minute:
// Java program to demonstrate simple GregorianCalendar // operations import java.util.Locale; import java.util.TimeZone; import java.util.Calendar; import java.util.GregorianCalendar; public class GregorianCalendarGFG { public static void main(String args[]) { // declaring an array to store month abbreviations String month[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; // declaring an array to store AM or PM String amPm[] = { "AM", "PM" }; /* Creating an object of GregorianCalendar class by specifiying year, month, dayOfMonth, hourOfDay and minute */ GregorianCalendar gcal = new GregorianCalendar(2018, 3, 30, 10, 21); // displaying the date, time, time zone and locale System.out.print("Date: " + month[gcal.get(Calendar.MONTH)] + " " + gcal.get(Calendar.DATE) + ", " + gcal.get(Calendar.YEAR) + "\n" + "Time: " + gcal.get(Calendar.HOUR) + ":" + gcal.get(Calendar.MINUTE) + ":" + gcal.get(Calendar.SECOND) + " " + amPm[gcal.get(Calendar.AM_PM)] + "\n" + "Time Zone: " + gcal.getTimeZone().getDisplayName() + "\n" + "Locale: " + Locale.getDefault().getDisplayName()); } // end of main function } // end of class |
Output:
Date: Apr 30, 2018 Time: 10:21:0 AM Time Zone: Coordinated Universal Time Locale: English (United States)
4. By passing year, month, dayOfMonth, hourOfDay, minute, second:
// Java program to demonstrate simple GregorianCalendar // operations import java.util.Locale; import java.util.TimeZone; import java.util.Calendar; import java.util.GregorianCalendar; public class GregorianCalendarGFG { public static void main(String args[]) { // declaring an array to store month abbreviations String month[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; // declaring an array to store AM or PM String amPm[] = { "AM", "PM" }; /* Creating an object of GregorianCalendar class by specifiying year, month, dayOfMonth, hourOfDay, minute and second */ GregorianCalendar gcal = new GregorianCalendar(2018, 3, 30, 10, 21, 51); // displaying the date, time, time zone and locale System.out.print("Date: " + month[gcal.get(Calendar.MONTH)] + " " + gcal.get(Calendar.DATE) + ", " + gcal.get(Calendar.YEAR) + "\n" + "Time: " + gcal.get(Calendar.HOUR) + ":" + gcal.get(Calendar.MINUTE) + ":" + gcal.get(Calendar.SECOND) + " " + amPm[gcal.get(Calendar.AM_PM)] + "\n" + "Time Zone: " + gcal.getTimeZone().getDisplayName() + "\n" + "Locale: " + Locale.getDefault().getDisplayName()); } // end of main function } // end of class |
Output:
Date: Apr 30, 2018 Time: 10:21:51 AM Time Zone: Coordinated Universal Time Locale: English (United States)
5. By passing timeZone as parameter:
// Java program to demonstrate simple GregorianCalendar // operations import java.util.TimeZone; import java.util.Locale; import java.util.Calendar; import java.util.GregorianCalendar; public class GregorianCalendarTest { public static void main(String args[]) { // declaring an array to store month abbreviations String month[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; // declaring an array to store AM or PM String amPm[] = { "AM", "PM" }; /* Creating an object of TimeZone class to create an object of GregorianCalendar class to assign an user defined time zone (GMT + 5:30)*/ TimeZone tz = TimeZone.getTimeZone("GMT+5:30"); GregorianCalendar gcal = new GregorianCalendar(tz); // displaying the date, time, time zone and locale System.out.print("Date: " + month[gcal.get(Calendar.MONTH)] + " " + gcal.get(Calendar.DATE) + ", " + gcal.get(Calendar.YEAR) + "\n" + "Time: " + gcal.get(Calendar.HOUR) + ":" + gcal.get(Calendar.MINUTE) + ":" + gcal.get(Calendar.SECOND) + " " + amPm[gcal.get(Calendar.AM_PM)] + "\n" + "Time Zone: " + gcal.getTimeZone().getDisplayName() + "\n" + "Locale: " + Locale.getDefault().getDisplayCountry()); } // end of main function } // end of class |
Output:
Date: May 1, 2018 Time: 4:24:7 AM Time Zone: GMT+05:30 Locale: United States
6. By passing the locale as a parameter:
// Java program to demonstrate simple GregorianCalendar // operations import java.util.TimeZone; import java.util.Locale; import java.util.Calendar; import java.util.GregorianCalendar; public class GregorianCalendarTest { public static void main(String args[]) { // declaring an array to store month abbreviations String month[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; // declaring an array to store AM or PM String amPm[] = { "AM", "PM" }; /* Creating an object of Locale class to create an object of GregorianCalendar class to assign an user defined locale (India)*/ Locale l = new Locale("en", "IN"); GregorianCalendar gcal = new GregorianCalendar(l); // displaying the date, time, time zone and locale System.out.print("Date: " + month[gcal.get(Calendar.MONTH)] + " " + gcal.get(Calendar.DATE) + ", " + gcal.get(Calendar.YEAR) + "\n" + "Time: " + gcal.get(Calendar.HOUR) + ":" + gcal.get(Calendar.MINUTE) + ":" + gcal.get(Calendar.SECOND) + " " + amPm[gcal.get(Calendar.AM_PM)] + "\n" + "Time Zone: " + gcal.getTimeZone().getDisplayName() + "\n" + "Locale: " + l.getDisplayCountry()); } // end of main function } // end of class |
Output:
Date: Apr 30, 2018 Time: 10:58:30 PM Time Zone: Coordinated Universal Time Locale: India
7. By passing timeZone and locale as parameters:
// Java program to demonstrate simple GregorianCalendar // operations import java.util.TimeZone; import java.util.Locale; import java.util.Calendar; import java.util.GregorianCalendar; public class GregorianCalendarTest { public static void main(String args[]) { // declaring an array to store month abbreviations String month[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; // declaring an array to store AM or PM String amPm[] = { "AM", "PM" }; /* Creating an object of TimeZone class and Locale class to create an object of GregorianCalendar class to assign an user defined time zone (GMT + 5:30) and locale (India)*/ TimeZone tz = TimeZone.getTimeZone("GMT+5:30"); Locale l = new Locale("en", "IN"); GregorianCalendar gcal = new GregorianCalendar(tz, l); // displaying the date, time, time zone and locale System.out.print("Date: " + month[gcal.get(Calendar.MONTH)] + " " + gcal.get(Calendar.DATE) + ", " + gcal.get(Calendar.YEAR) + "\n" + "Time: " + gcal.get(Calendar.HOUR) + ":" + gcal.get(Calendar.MINUTE) + ":" + gcal.get(Calendar.SECOND) + " " + amPm[gcal.get(Calendar.AM_PM)] + "\n" + "Time Zone: " + gcal.getTimeZone().getDisplayName() + "\n" + "Locale: " + l.getDisplayCountry()); } // end of main function } // end of class |
Output:
Date: May 1, 2018 Time: 4:34:59 AM Time Zone: GMT+05:30 Locale: India
Reference:
GregorianCalendar (Java Platform SE 8 ) – Oracle Help Center
Attention reader! Don’t stop learning now. Get hold of all the important Java and Collections concepts with the Fundamentals of Java and Java Collections Course at a student-friendly price and become industry ready.
Recommended Posts:
- Java.lang.Class class in Java | Set 1
- Java.lang.Class class in Java | Set 2
- Using predefined class name as Class or Variable name in Java
- Java.util.TimeZone Class (Set-2) | Example On TimeZone Class
- Implement Pair Class with Unit Class in Java using JavaTuples
- Implement Triplet Class with Pair Class in Java using JavaTuples
- Implement Quintet Class with Quartet Class in Java using JavaTuples
- Implement Quartet Class with Triplet Class in Java using JavaTuples
- Implement Octet Class from Septet Class in Java using JavaTuples
- Implement Ennead Class from Octet Class in Java using JavaTuples
- Implement Sextet Class from Quintet Class in Java using JavaTuples
- Implement Septet Class from Sextet Class in Java using JavaTuples
- Implement Decade Class from Ennead Class in Java using JavaTuples
- Difference between Abstract Class and Concrete Class in Java
- In Java, Can we call the main() method of a class from another class?
- Does JVM create object of Main class (the class with main())?
- Inner Class And Anonymous Inner Class that Implements Runnable | Concurrent Programming Approach 3
- Java.util.BitSet class methods in Java with Examples | Set 2
- Java.Lang.Float class in Java
- Java.io.BufferedInputStream class in Java
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.

