java.util.Calendar Class

The Calendar class is an abstract class that provides methods for converting between a specific instant in time and a set of calendar fields such as YEAR, MONTH, DAY_OF_MONTH, HOUR, and so on, and for manipulating the calendar fields, such as getting the date of the next week.

The class also provides additional fields and methods for implementing a concrete calendar system outside the package. Those fields and methods are defined as protected.

Like other locale-sensitive classes, Calendar provides a class method, getInstance, for getting a generally useful object of this type. Calendar's getInstance method returns a Calendar object whose calendar fields have been initialized with the current date and time:

Calendar rightNow = Calendar.getInstance();

A Calendar object can produce all the calendar field values needed to implement the date-time formatting for a particular language and calendar style (for example, Japanese-Gregorian, Japanese-Traditional). Calendar defines the range of values returned by certain calendar fields, as well as their meaning. For example, the first month of the calendar system has value MONTH == JANUARY for all calendars. Other values are defined by the concrete subclass, such as ERA.

Getting and Setting Calendar Field Values

The calendar field values can be set by calling the set methods. Any field values set in a Calendar will not be interpreted until it needs to calculate its time value (milliseconds from the Epoch) or values of the calendar fields. Calling the get, getTimeInMillis, getTime, add and roll involves such calculation.

Leniency

Calendar has two modes for interpreting the calendar fields, lenient and non-lenient. When a Calendar is in lenient mode, it accepts a wider range of calendar field values than it produces. When a Calendar recomputes calendar field values for return by get(), all of the calendar fields are normalized. For example, a lenient GregorianCalendar interprets MONTH == JANUARY, DAY_OF_MONTH == 32 as February 1.

When a Calendar is in non-lenient mode, it throws an exception if there is any inconsistency in its calendar fields. For example, a GregorianCalendar always produces DAY_OF_MONTH values between 1 and the length of the month. A non-lenient GregorianCalendar throws an exception upon calculating its time or calendar field values if any out-of-range field value has been set.

In this tutorial you can learn how to create Calendar. And also learn how to use Calendar class.

java.util.Calendar Class Example
/* Save with file name CalendarExample.java */

public class CalendarExample
{
	public static void main(String args[])
	{
		//java.util.Calendar DECLARATION
		java.util.Calendar c;

		//java.util.Calendar OBJECT CREATION
		c = java.util.Calendar.getInstance();

		//java.util.Calendar OUTPUT
		System.out.println(c.getTime());

		//java.util.Date
		java.util.Date d = new java.util.Date(c.getTimeInMillis());

		//java.util.Date OUTPUT
		System.out.println(d);

		//GETTING TIMEZONE
		System.out.println("TimeZone is : "+ c.getTimeZone().getID());
	}
}
                        

In the following example you can learn how to get date and time from java.util.Calendar class with Calendar Fields.

java.util.Calendar Class Example 2
/* Save with file name CalendarExample2.java */

import java.util.*;

public class CalendarExample2
{
	public static void main(String args[])
	{
		//java.util.Calendar DECLARATION
		Calendar c;

		//java.util.Calendar OBJECT CREATION
		c = Calendar.getInstance();

		//java.util.Calendar OUTPUT
		System.out.println(c.getTime());

		//CALENDAR DATE
		System.out.println("Date : " + c.get(Calendar.DATE));

		//CALENDAR MONTH
		//YOU SHOULD ADD +1 FOR OUTPUT
		//i.e. JAN = 0, FEB = 1,...,NOV = 10,DEC =11
		System.out.println("Month : " + (c.get(Calendar.MONTH)+1));

		//CALENDAR YEAR
		System.out.println("Year : " + c.get(Calendar.YEAR));

		//CALENDAR HOUR
		System.out.println("Hour : " + c.get(Calendar.HOUR));

		//CALENDAR MINUTE
		System.out.println("Minute : " + c.get(Calendar.MINUTE));

		//CALENDAR SECOND
		System.out.println("Second : " + c.get(Calendar.SECOND));

		//CALENDAR AM OR PM (AM = 0, PM = 1)
		System.out.println("AM OR PM : " + c.get(Calendar.AM_PM));
	}
}
                        

In the following example you can learn how to compare two java.util.Calendar objects and how to get the Maximum values and Minimum values of particular Calendar Field.

java.util.Calendar Class Example 3
/* Save with file name CalendarExample3.java */

import java.util.*;

public class CalendarExample3
{
	public static void main(String args[])
	{
		//java.util.Calendar DECLARATION
		Calendar c, d;

		//java.util.Calendar OBJECT CREATION
		c = Calendar.getInstance();
		d = Calendar.getInstance();

		//java.util.Calendar OUTPUT
		System.out.println("c value : " + c.getTime());
		System.out.println("d value : " + d.getTime());

		System.out.println("c after d : " + c.after(d));

		System.out.println("c before d : " + c.before(d));

		System.out.println("c compareTo d : " + c.compareTo(d));

		System.out.println("c equals d : " + c.equals(d));

		System.out.println("getActualMaximum:"+c.getActualMaximum(Calendar.DATE));

		System.out.println("getActualMinimum:"+c.getActualMinimum(Calendar.DATE));

	}
}
                        

In the following example you can learn how to set the values to java.util.Calendar Object.

java.util.Calendar Class Example 4
/* Save with file name CalendarExample4.java */

import java.util.*;

public class CalendarExample4
{
	public static void main(String args[])
	{
		//java.util.Calendar DECLARATION
		Calendar c;

		//java.util.Calendar OBJECT CREATION
		c = Calendar.getInstance();
		//java.util.Calendar OUTPUT
		System.out.println("c value : " + c.getTime());

		//SET THE VALUES FOR CALENDAR
		c.set(2011,9,1,2,3,4);

		//java.util.Calendar OUTPUT AFTER SETTING THE VALUES
		System.out.println("c value after change : " + c.getTime());

	}
}