# Class Calendar

java.lang.Object
java.util.Calendar

public abstract class Calendar extends Object
Calendar is an abstract base class for converting between a Date object and a set of integer fields such as YEAR, MONTH, DAY, HOUR, and so on. (A Date object represents a specific instant in time with millisecond precision. See Date for information about the Date class.) Subclasses of Calendar interpret a Date according to the rules of a specific calendar system. Like other locale-sensitive classes, Calendar provides a class method, getInstance, for getting a generally useful object of this type. A Calendar object can produce all the time field values needed to implement the date-time formatting for a particular language and calendar style (for example, Japanese-Gregorian, Japanese-Traditional). When computing a Date from time fields, there may be insufficient information to compute the Date (such as only year and month but no day in the month). Insufficient information. The calendar will use default information to specify the missing fields. This may vary by calendar; for the Gregorian calendar, the default for a field is the same as that of the start of the epoch: i.e., YEAR = 1970, MONTH = JANUARY, DATE = 1, etc. Note: The ambiguity in interpretation of what day midnight belongs to, is resolved as so: midnight "belongs" to the following day. 23:59 on Dec 31, 1969 00:00 on Jan 1, 1970. 12:00 PM is midday, and 12:00 AM is midnight. 11:59 PM on Jan 1 12:00 AM on Jan 2 12:01 AM on Jan 2. 11:59 AM on Mar 10 12:00 PM on Mar 10 12:01 PM on Mar 10. 24:00 or greater are invalid. Hours greater than 12 are invalid in AM/PM mode. Setting the time will never change the date. If equivalent times are entered in AM/PM or 24 hour mode, equality will be determined by the actual time rather than the entered time. This class has been subset for J2ME based on the JDK 1.3 Calendar class. Many methods and variables have been pruned, and other methods simplified, in an effort to reduce the size of this class. Version: CLDC 1.1 02/01/2002 (based on JDK 1.3) See Also:Date, TimeZone

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final int`
  `AM`
  Value of the AM_PM field indicating the period of the day from midnight to just before noon.
  `static final int`
  `AM_PM`
  Field number for get and set indicating whether the HOUR is before or after noon.
  `static final int`
  `APRIL`
  Value of the MONTH field indicating the fourth month of the year.
  `static final int`
  `AUGUST`
  Value of the MONTH field indicating the eighth month of the year.
  `static final int`
  `DATE`
  Field number for get and set indicating the day of the month.
  `static final int`
  `DAY_OF_MONTH`
  Field number for get and set indicating the day of the month.
  `static final int`
  `DAY_OF_WEEK`
  Field number for get and set indicating the day of the week.
  `static final int`
  `DAY_OF_WEEK_IN_MONTH`
  Field number for `get` and `set` indicating the ordinal number of the day of the week within the current month.
  `static final int`
  `DECEMBER`
  Value of the MONTH field indicating the twelfth month of the year.
  `static final int`
  `FEBRUARY`
  Value of the MONTH field indicating the second month of the year.
  `protected int[]`
  `fields`
  The field values for the currently set time for this calendar.
  `static final int`
  `FRIDAY`
  Value of the DAY_OF_WEEK field indicating Friday.
  `static final int`
  `HOUR`
  Field number for get and set indicating the hour of the morning or afternoon.
  `static final int`
  `HOUR_OF_DAY`
  Field number for get and set indicating the hour of the day.
  `protected boolean[]`
  `isSet`
  The flags which tell if a specified time field for the calendar is set.
  `static final int`
  `JANUARY`
  Value of the MONTH field indicating the first month of the year.
  `static final int`
  `JULY`
  Value of the MONTH field indicating the seventh month of the year.
  `static final int`
  `JUNE`
  Value of the MONTH field indicating the sixth month of the year.
  `static final int`
  `MARCH`
  Value of the MONTH field indicating the third month of the year.
  `static final int`
  `MAY`
  Value of the MONTH field indicating the fifth month of the year.
  `static final int`
  `MILLISECOND`
  Field number for get and set indicating the millisecond within the second.
  `static final int`
  `MINUTE`
  Field number for get and set indicating the minute within the hour.
  `static final int`
  `MONDAY`
  Value of the DAY_OF_WEEK field indicating Monday.
  `static final int`
  `MONTH`
  Field number for get and set indicating the month.
  `static final int`
  `NOVEMBER`
  Value of the MONTH field indicating the eleventh month of the year.
  `static final int`
  `OCTOBER`
  Value of the MONTH field indicating the tenth month of the year.
  `static final int`
  `PM`
  Value of the AM_PM field indicating the period of the day from noon to just before midnight.
  `static final int`
  `SATURDAY`
  Value of the DAY_OF_WEEK field indicating Saturday.
  `static final int`
  `SECOND`
  Field number for get and set indicating the second within the minute.
  `static final int`
  `SEPTEMBER`
  Value of the MONTH field indicating the ninth month of the year.
  `static final int`
  `SUNDAY`
  Value of the DAY_OF_WEEK field indicating Sunday.
  `static final int`
  `THURSDAY`
  Value of the DAY_OF_WEEK field indicating Thursday.
  `protected long`
  `time`
  The currently set time for this calendar, expressed in milliseconds after January 1, 1970, 0:00:00 GMT.
  `static final int`
  `TUESDAY`
  Value of the DAY_OF_WEEK field indicating Tuesday.
  `static final int`
  `WEDNESDAY`
  Value of the DAY_OF_WEEK field indicating Wednesday.
  `static final int`
  `WEEK_OF_MONTH`
  Field number for `get` and `set` indicating the week number within the current month.
  `static final int`
  `WEEK_OF_YEAR`
  Field number for `get` and `set` indicating the week number within the current year.
  `static final int`
  `YEAR`
  Field number for get and set indicating the year.

- ## Constructor Summary

  Constructors
  Modifier
  Constructor
  Description
  `protected`
  `Calendar()`
  Constructs a Calendar with the default time zone.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `final void`
  `add(int field, int value)`
  Adds the specified amount to a `Calendar` field.
  `boolean`
  `after(Object when)`
  Compares the time field records.
  `boolean`
  `before(Object when)`
  Compares the time field records.
  `protected abstract void`
  `computeFields()`
  Converts the current millisecond time value time to field values in fields[].
  `protected abstract void`
  `computeTime()`
  Converts the current field values in fields[] to the millisecond time value time.
  `boolean`
  `equals(Object obj)`
  Compares this calendar to the specified object.
  `final int`
  `get(int field)`
  Gets the value for a given time field.
  `static Calendar`
  `getInstance()`
  Gets a calendar using the default time zone.
  `static Calendar`
  `getInstance(TimeZone zone)`
  Gets a calendar using the specified time zone.
  `final Date`
  `getTime()`
  Gets this Calendar's current time.
  `protected long`
  `getTimeInMillis()`
  Gets this Calendar's current time as a long expressed in milliseconds after January 1, 1970, 0:00:00 GMT (the epoch).
  `TimeZone`
  `getTimeZone()`
  Gets the time zone.
  `final void`
  `set(int field, int value)`
  Sets the time field with the given value.
  `final void`
  `setTime(Date date)`
  Sets this Calendar's current time with the given Date.
  `protected void`
  `setTimeInMillis(long millis)`
  Sets this Calendar's current time from the given long value.
  `void`
  `setTimeZone(TimeZone value)`
  Sets the time zone with the given time zone value.

  ### Methods inherited from class Object

  `clone, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Field Details

  - ### AM

    public static final int AM
    Value of the AM_PM field indicating the period of the day from midnight to just before noon. See Also:Constant Field Values
    See Also:
      - Constant Field Values

  - ### AM_PM

    public static final int AM_PM
    Field number for get and set indicating whether the HOUR is before or after noon. E.g., at 10:04:15.250 PM the AM_PM is PM. See Also:AM, PM, HOUR, Constant Field Values
    See Also:
      - Constant Field Values

  - ### APRIL

    public static final int APRIL
    Value of the MONTH field indicating the fourth month of the year. See Also:Constant Field Values
    See Also:
      - Constant Field Values

  - ### AUGUST

    public static final int AUGUST
    Value of the MONTH field indicating the eighth month of the year. See Also:Constant Field Values
    See Also:
      - Constant Field Values

  - ### WEEK_OF_YEAR

    public static final int WEEK_OF_YEAR

    Field number for `get` and `set` indicating the week number within the current year. The first week of the year, as defined by `getFirstDayOfWeek()` and `getMinimalDaysInFirstWeek()`, has value 1. Subclasses define the value of `WEEK_OF_YEAR` for days before the first week of the year.

    ###### See also

    - #getFirstDayOfWeek

    - #getMinimalDaysInFirstWeek

    See Also:
      - Constant Field Values

  - ### WEEK_OF_MONTH

    public static final int WEEK_OF_MONTH

    Field number for `get` and `set` indicating the week number within the current month. The first week of the month, as defined by `getFirstDayOfWeek()` and `getMinimalDaysInFirstWeek()`, has value 1. Subclasses define the value of `WEEK_OF_MONTH` for days before the first week of the month.

    ###### See also

    - #getFirstDayOfWeek

    - #getMinimalDaysInFirstWeek

    See Also:
      - Constant Field Values

  - ### DATE

    public static final int DATE
    Field number for get and set indicating the day of the month. This is a synonym for DAY_OF_MONTH. See Also:DAY_OF_MONTH, Constant Field Values
    See Also:
      - Constant Field Values

  - ### DAY_OF_MONTH

    public static final int DAY_OF_MONTH
    Field number for get and set indicating the day of the month. This is a synonym for DATE. See Also:DATE, Constant Field Values
    See Also:
      - Constant Field Values

  - ### DAY_OF_WEEK

    public static final int DAY_OF_WEEK
    Field number for get and set indicating the day of the week. See Also:Constant Field Values
    See Also:
      - Constant Field Values

  - ### DAY_OF_WEEK_IN_MONTH

    public static final int DAY_OF_WEEK_IN_MONTH

    Field number for `get` and `set` indicating the ordinal number of the day of the week within the current month. Together with the `DAY_OF_WEEK` field, this uniquely specifies a day within a month. Unlike `WEEK_OF_MONTH` and `WEEK_OF_YEAR`, this field's value does not depend on `getFirstDayOfWeek()` or `getMinimalDaysInFirstWeek()`. `DAY_OF_MONTH 1` through `7` always correspond to `DAY_OF_WEEK_IN_MONTH 1`; `8` through `15` correspond to `DAY_OF_WEEK_IN_MONTH 2`, and so on. `DAY_OF_WEEK_IN_MONTH 0` indicates the week before `DAY_OF_WEEK_IN_MONTH 1`. Negative values count back from the end of the month, so the last Sunday of a month is specified as `DAY_OF_WEEK = SUNDAY, DAY_OF_WEEK_IN_MONTH = -1`. Because negative values count backward they will usually be aligned differently within the month than positive values. For example, if a month has 31 days, `DAY_OF_WEEK_IN_MONTH -1` will overlap `DAY_OF_WEEK_IN_MONTH 5` and the end of `4`.

    ###### See also

    - #DAY_OF_WEEK

    - #WEEK_OF_MONTH

    See Also:
      - Constant Field Values

  - ### DECEMBER

    public static final int DECEMBER
    Value of the MONTH field indicating the twelfth month of the year. See Also:Constant Field Values
    See Also:
      - Constant Field Values

  - ### FEBRUARY

    public static final int FEBRUARY
    Value of the MONTH field indicating the second month of the year. See Also:Constant Field Values
    See Also:
      - Constant Field Values

  - ### fields

    protected int[] fields
    The field values for the currently set time for this calendar.

  - ### FRIDAY

    public static final int FRIDAY
    Value of the DAY_OF_WEEK field indicating Friday. See Also:Constant Field Values
    See Also:
      - Constant Field Values

  - ### HOUR

    public static final int HOUR
    Field number for get and set indicating the hour of the morning or afternoon. HOUR is used for the 12-hour clock. E.g., at 10:04:15.250 PM the HOUR is 10. See Also:AM_PM, HOUR_OF_DAY, Constant Field Values
    See Also:
      - Constant Field Values

  - ### HOUR_OF_DAY

    public static final int HOUR_OF_DAY
    Field number for get and set indicating the hour of the day. HOUR_OF_DAY is used for the 24-hour clock. E.g., at 10:04:15.250 PM the HOUR_OF_DAY is 22. See Also:Constant Field Values
    See Also:
      - Constant Field Values

  - ### isSet

    protected boolean[] isSet
    The flags which tell if a specified time field for the calendar is set. This is an array of FIELD_COUNT booleans,

  - ### JANUARY

    public static final int JANUARY
    Value of the MONTH field indicating the first month of the year. See Also:Constant Field Values
    See Also:
      - Constant Field Values

  - ### JULY

    public static final int JULY
    Value of the MONTH field indicating the seventh month of the year. See Also:Constant Field Values
    See Also:
      - Constant Field Values

  - ### JUNE

    public static final int JUNE
    Value of the MONTH field indicating the sixth month of the year. See Also:Constant Field Values
    See Also:
      - Constant Field Values

  - ### MARCH

    public static final int MARCH
    Value of the MONTH field indicating the third month of the year. See Also:Constant Field Values
    See Also:
      - Constant Field Values

  - ### MAY

    public static final int MAY
    Value of the MONTH field indicating the fifth month of the year. See Also:Constant Field Values
    See Also:
      - Constant Field Values

  - ### MILLISECOND

    public static final int MILLISECOND
    Field number for get and set indicating the millisecond within the second. E.g., at 10:04:15.250 PM the MILLISECOND is 250. See Also:Constant Field Values
    See Also:
      - Constant Field Values

  - ### MINUTE

    public static final int MINUTE
    Field number for get and set indicating the minute within the hour. E.g., at 10:04:15.250 PM the MINUTE is 4. See Also:Constant Field Values
    See Also:
      - Constant Field Values

  - ### MONDAY

    public static final int MONDAY
    Value of the DAY_OF_WEEK field indicating Monday. See Also:Constant Field Values
    See Also:
      - Constant Field Values

  - ### MONTH

    public static final int MONTH
    Field number for get and set indicating the month. This is a calendar-specific value. See Also:Constant Field Values
    See Also:
      - Constant Field Values

  - ### NOVEMBER

    public static final int NOVEMBER
    Value of the MONTH field indicating the eleventh month of the year. See Also:Constant Field Values
    See Also:
      - Constant Field Values

  - ### OCTOBER

    public static final int OCTOBER
    Value of the MONTH field indicating the tenth month of the year. See Also:Constant Field Values
    See Also:
      - Constant Field Values

  - ### PM

    public static final int PM
    Value of the AM_PM field indicating the period of the day from noon to just before midnight. See Also:Constant Field Values
    See Also:
      - Constant Field Values

  - ### SATURDAY

    public static final int SATURDAY
    Value of the DAY_OF_WEEK field indicating Saturday. See Also:Constant Field Values
    See Also:
      - Constant Field Values

  - ### SECOND

    public static final int SECOND
    Field number for get and set indicating the second within the minute. E.g., at 10:04:15.250 PM the SECOND is 15. See Also:Constant Field Values
    See Also:
      - Constant Field Values

  - ### SEPTEMBER

    public static final int SEPTEMBER
    Value of the MONTH field indicating the ninth month of the year. See Also:Constant Field Values
    See Also:
      - Constant Field Values

  - ### SUNDAY

    public static final int SUNDAY
    Value of the DAY_OF_WEEK field indicating Sunday. See Also:Constant Field Values
    See Also:
      - Constant Field Values

  - ### THURSDAY

    public static final int THURSDAY
    Value of the DAY_OF_WEEK field indicating Thursday. See Also:Constant Field Values
    See Also:
      - Constant Field Values

  - ### time

    protected long time
    The currently set time for this calendar, expressed in milliseconds after January 1, 1970, 0:00:00 GMT.

  - ### TUESDAY

    public static final int TUESDAY
    Value of the DAY_OF_WEEK field indicating Tuesday. See Also:Constant Field Values
    See Also:
      - Constant Field Values

  - ### WEDNESDAY

    public static final int WEDNESDAY
    Value of the DAY_OF_WEEK field indicating Wednesday. See Also:Constant Field Values
    See Also:
      - Constant Field Values

  - ### YEAR

    public static final int YEAR
    Field number for get and set indicating the year. This is a calendar-specific value. See Also:Constant Field Values
    See Also:
      - Constant Field Values

- ## Constructor Details

  - ### Calendar

    protected Calendar()
    Constructs a Calendar with the default time zone. See Also:TimeZone.getDefault()

- ## Method Details

  - ### after

    public boolean after(Object when)
    Compares the time field records. Equivalent to comparing result of conversion to UTC.

  - ### before

    public boolean before(Object when)
    Compares the time field records. Equivalent to comparing result of conversion to UTC.

  - ### computeFields

    protected abstract void computeFields()
    Converts the current millisecond time value time to field values in fields[]. This allows you to sync up the time field values with a new time that is set for the calendar.

  - ### computeTime

    protected abstract void computeTime()
    Converts the current field values in fields[] to the millisecond time value time.

  - ### equals

    public boolean equals(Object obj)
    Compares this calendar to the specified object. The result is true if and only if the argument is not null and is a Calendar object that represents the same calendar as this object.
    Overrides:
      `equals` in class `Object`

  - ### get

    public final int get(int field)
    Gets the value for a given time field.

  - ### getInstance

    public static Calendar getInstance()
    Gets a calendar using the default time zone.

  - ### getInstance

    public static Calendar getInstance(TimeZone zone)
    Gets a calendar using the specified time zone.

  - ### getTime

    public final Date getTime()
    Gets this Calendar's current time.

  - ### getTimeInMillis

    protected long getTimeInMillis()
    Gets this Calendar's current time as a long expressed in milliseconds after January 1, 1970, 0:00:00 GMT (the epoch).

  - ### getTimeZone

    public TimeZone getTimeZone()
    Gets the time zone.

  - ### set

    public final void set(int field, int value)
    Sets the time field with the given value.

  - ### add

    public final void add(int field, int value)

    Adds the specified amount to a `Calendar` field.

    ###### Parameters

    - `field`: the `Calendar` field to modify.

    - `value`: the amount to add to the field.

    ###### Throws

    - `IllegalArgumentException`: if `field` is `DST_OFFSET` or `ZONE_OFFSET`.

  - ### setTime

    public final void setTime(Date date)
    Sets this Calendar's current time with the given Date. Note: Calling setTime() with Date(Long.MAX_VALUE) or Date(Long.MIN_VALUE) may yield incorrect field values from get().

  - ### setTimeInMillis

    protected void setTimeInMillis(long millis)
    Sets this Calendar's current time from the given long value.

  - ### setTimeZone

    public void setTimeZone(TimeZone value)
    Sets the time zone with the given time zone value.