Java.util.GregorianCalendar Class in Java

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.

filter_none

edit
close

play_arrow

link
brightness_4
code

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

chevron_right


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

filter_none

edit
close

play_arrow

link
brightness_4
code

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

chevron_right


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:



filter_none

edit
close

play_arrow

link
brightness_4
code

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

chevron_right


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:

filter_none

edit
close

play_arrow

link
brightness_4
code

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

chevron_right


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:

filter_none

edit
close

play_arrow

link
brightness_4
code

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

chevron_right


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:

filter_none

edit
close

play_arrow

link
brightness_4
code

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

chevron_right


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:

filter_none

edit
close

play_arrow

link
brightness_4
code

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

chevron_right


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:

filter_none

edit
close

play_arrow

link
brightness_4
code

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

chevron_right


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.




My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

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.


Article Tags :
Practice Tags :


1


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.