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
// 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 Calendar 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
// 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
// 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 specifying 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
// 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 specifying 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
// 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 specifying 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
// 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
// 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
// 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