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
{@link 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.
Calendar rightNow = Calendar.getInstance();
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. |
Fields Summary |
---|
public static final int | YEARField number for get and set indicating the
year. This is a calendar-specific value. |
public static final int | MONTHField number for get and set indicating the
month. This is a calendar-specific value. |
public static final int | DATEField number for get and set indicating the
day of the month. This is a synonym for DAY_OF_MONTH . |
public static final int | DAY_OF_MONTHField number for get and set indicating the
day of the month. This is a synonym for DATE . |
public static final int | DAY_OF_WEEKField number for get and set indicating the
day of the week. |
public static final int | AM_PMField 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 . |
public static final int | HOURField 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. |
public static final int | HOUR_OF_DAYField 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. |
public static final int | MINUTEField number for get and set indicating the
minute within the hour.
E.g., at 10:04:15.250 PM the MINUTE is 4. |
public static final int | SECONDField number for get and set indicating the
second within the minute.
E.g., at 10:04:15.250 PM the SECOND is 15. |
public static final int | MILLISECONDField number for get and set indicating the
millisecond within the second.
E.g., at 10:04:15.250 PM the MILLISECOND is 250. |
public static final int | SUNDAYValue of the DAY_OF_WEEK field indicating
Sunday. |
public static final int | MONDAYValue of the DAY_OF_WEEK field indicating
Monday. |
public static final int | TUESDAYValue of the DAY_OF_WEEK field indicating
Tuesday. |
public static final int | WEDNESDAYValue of the DAY_OF_WEEK field indicating
Wednesday. |
public static final int | THURSDAYValue of the DAY_OF_WEEK field indicating
Thursday. |
public static final int | FRIDAYValue of the DAY_OF_WEEK field indicating
Friday. |
public static final int | SATURDAYValue of the DAY_OF_WEEK field indicating
Saturday. |
public static final int | JANUARYValue of the MONTH field indicating the
first month of the year. |
public static final int | FEBRUARYValue of the MONTH field indicating the
second month of the year. |
public static final int | MARCHValue of the MONTH field indicating the
third month of the year. |
public static final int | APRILValue of the MONTH field indicating the
fourth month of the year. |
public static final int | MAYValue of the MONTH field indicating the
fifth month of the year. |
public static final int | JUNEValue of the MONTH field indicating the
sixth month of the year. |
public static final int | JULYValue of the MONTH field indicating the
seventh month of the year. |
public static final int | AUGUSTValue of the MONTH field indicating the
eighth month of the year. |
public static final int | SEPTEMBERValue of the MONTH field indicating the
ninth month of the year. |
public static final int | OCTOBERValue of the MONTH field indicating the
tenth month of the year. |
public static final int | NOVEMBERValue of the MONTH field indicating the
eleventh month of the year. |
public static final int | DECEMBERValue of the MONTH field indicating the
twelfth month of the year. |
public static final int | AMValue of the AM_PM field indicating the
period of the day from midnight to just before noon. |
public static final int | PMValue of the AM_PM field indicating the
period of the day from noon to just before midnight. |
private static final int | FIELDS |
protected int[] | fieldsThe field values for the currently set time for this calendar. |
protected boolean[] | isSetThe flags which tell if a specified time field for the calendar is set.
This is an array of FIELD_COUNT booleans, |
protected long | timeThe currently set time for this calendar, expressed in milliseconds after
January 1, 1970, 0:00:00 GMT. |
private boolean | isTimeSetTrue if then the value of time is valid.
The time is made invalid by a change to an item of field[] . |
private TimeZone | zoneThe TimeZone used by this calendar. Calendar
uses the time zone data to translate between the current/default
system time and GMT time. |
private Date | dateObj |
Methods Summary |
---|
public boolean | after(java.lang.Object when)Compares the time field records.
Equivalent to comparing result of conversion to UTC.
return (when instanceof Calendar
&& getTimeInMillis() > ((Calendar)when).getTimeInMillis());
|
public boolean | before(java.lang.Object when)Compares the time field records.
Equivalent to comparing result of conversion to UTC.
return (when instanceof Calendar
&& getTimeInMillis() < ((Calendar)when).getTimeInMillis());
|
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.
|
protected abstract void | computeTime()Converts the current field values in fields[]
to the millisecond time value
time .
|
public boolean | equals(java.lang.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.
if (this == obj) {
return true;
}
if (!(obj instanceof Calendar)) {
return false;
}
Calendar that = (Calendar)obj;
return getTimeInMillis() == that.getTimeInMillis() && zone.equals(that.zone);
|
public final int | get(int field)Gets the value for a given time field.
if ( field == DAY_OF_WEEK ||
field == HOUR_OF_DAY ||
field == AM_PM ||
field == HOUR ) {
getTimeInMillis();
computeFields();
}
return this.fields[field];
|
public static synchronized java.util.Calendar | getInstance()Gets a calendar using the default time zone.
try {
// Obtain the calendar implementation class
Class clazz = Class.forName("com.sun.cldc.util.j2me.CalendarImpl");
// Construct a new instance
return (Calendar)clazz.newInstance();
}
catch (Exception x) {}
return null;
|
public static synchronized java.util.Calendar | getInstance(java.util.TimeZone zone)Gets a calendar using the specified time zone.
Calendar cal = getInstance();
cal.setTimeZone(zone);
return cal;
|
public final java.util.Date | getTime()Gets this Calendar's current time.
if (dateObj == null) {
return dateObj = new Date( getTimeInMillis() );
} else {
synchronized (dateObj) {
dateObj.setTime( getTimeInMillis() );
return dateObj;
}
}
|
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).
if (!isTimeSet) {
computeTime();
isTimeSet = true;
}
return this.time;
|
public java.util.TimeZone | getTimeZone()Gets the time zone.
return zone;
|
public final void | set(int field, int value)Sets the time field with the given value.
isTimeSet = false;
this.isSet[field] = true;
this.fields[field] = value;
|
public final void | setTime(java.util.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( date.getTime() );
|
protected void | setTimeInMillis(long millis)Sets this Calendar's current time from the given long value.
isTimeSet = true;
this.fields[DAY_OF_WEEK] = 0;
this.time = millis;
computeFields();
|
public void | setTimeZone(java.util.TimeZone value)Sets the time zone with the given time zone value.
zone = value;
getTimeInMillis();
computeFields();
|