class Calendar
Defined at line 190 of file ../../third_party/icu/latest/source/i18n/unicode/calendar.h
`Calendar` is an abstract base class for converting between
a `UDate` object and a set of integer fields such as
`YEAR`, `MONTH`, `DAY`, `HOUR`, and so on.
(A `UDate` object represents a specific instant in
time with millisecond precision. See UDate
for information about the `UDate` class.)
Subclasses of `Calendar` interpret a `UDate`
according to the rules of a specific calendar system.
The most commonly used subclass of `Calendar` is
`GregorianCalendar`. Other subclasses could represent
the various types of lunar calendars in use in many parts of the world.
**NOTE**: (ICU 2.6) The subclass interface should be considered unstable -
it WILL change.
Like other locale-sensitive classes, `Calendar` provides a
static method, `createInstance`, for getting a generally useful
object of this type. `Calendar`'s `createInstance` method
returns the appropriate `Calendar` subclass whose
time fields have been initialized with the current date and time:
Calendar *rightNow = Calendar::createInstance(errCode);
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 `UDate` from time fields, some special circumstances
may arise: there may be insufficient information to compute the
`UDate` (such as only year and month but no day in the month),
there may be inconsistent information (such as "Tuesday, July 15, 1996"
-- July 15, 1996 is actually a Monday), or the input time might be ambiguous
because of time zone transition.
**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.
**Inconsistent information.** If fields conflict, the calendar
will give preference to fields set more recently. For example, when
determining the day, the calendar will look for one of the following
combinations of fields. The most recent combination, as determined by the
most recently set single field, will be used.
MONTH + DAY_OF_MONTH
MONTH + WEEK_OF_MONTH + DAY_OF_WEEK
MONTH + DAY_OF_WEEK_IN_MONTH + DAY_OF_WEEK
DAY_OF_YEAR
DAY_OF_WEEK + WEEK_OF_YEAR
For the time of day:
HOUR_OF_DAY
AM_PM + HOUR
**Ambiguous Wall Clock Time.** When time offset from UTC has
changed, it produces an ambiguous time slot around the transition. For example,
many US locations observe daylight saving time. On the date switching to daylight
saving time in US, wall clock time jumps from 12:59 AM (standard) to 2:00 AM
(daylight). Therefore, wall clock time from 1:00 AM to 1:59 AM do not exist on
the date. When the input wall time fall into this missing time slot, the ICU
Calendar resolves the time using the UTC offset before the transition by default.
In this example, 1:30 AM is interpreted as 1:30 AM standard time (non-exist),
so the final result will be 2:30 AM daylight time.
On the date switching back to standard time, wall clock time is moved back one
hour at 2:00 AM. So wall clock time from 1:00 AM to 1:59 AM occur twice. In this
case, the ICU Calendar resolves the time using the UTC offset after the transition
by default. For example, 1:30 AM on the date is resolved as 1:30 AM standard time.
Ambiguous wall clock time resolution behaviors can be customized by Calendar APIs
{
Protected Members
int32_t[24] fFields
static const int32_t kResolveSTOP
static const int32_t kResolveRemap
static const UFieldResolutionTable[] kDatePrecedence
static const UFieldResolutionTable[] kYearPrecedence
static const UFieldResolutionTable[] kDOWPrecedence
static const UFieldResolutionTable[] kMonthPrecedence
Public Methods
Calendar * clone ()
Create and return a polymorphic copy of this calendar.
Returns
a polymorphic copy of this calendar.
ICU 2.0
Calendar * createInstance (UErrorCode & success)
Creates a Calendar using the default timezone and locale. Clients are responsible
for deleting the object returned.
Parameters
Returns
A Calendar if created successfully. nullptr otherwise.
ICU 2.0
Calendar * createInstance (const TimeZone & zone, UErrorCode & success)
Creates a Calendar using the given timezone and the default locale. The TimeZone
is _not_ adopted; the client is still responsible for deleting it.
Parameters
Returns
A Calendar if created successfully. nullptr otherwise.
ICU 2.0
Calendar * createInstance (const Locale & aLocale, UErrorCode & success)
Creates a Calendar using the default timezone and the given locale.
Parameters
Returns
A Calendar if created successfully. nullptr otherwise.
ICU 2.0
Calendar * createInstance (TimeZone * zoneToAdopt, const Locale & aLocale, UErrorCode & success)
Creates a Calendar using the given timezone and given locale.
The Calendar takes ownership of zoneToAdopt; the
client must not delete it.
Parameters
Returns
A Calendar if created successfully. nullptr otherwise.
ICU 2.0
Calendar * createInstance (const TimeZone & zone, const Locale & aLocale, UErrorCode & success)
Gets a Calendar using the given timezone and given locale. The TimeZone
is _not_ adopted; the client is still responsible for deleting it.
Parameters
Returns
A Calendar if created successfully. nullptr otherwise.
ICU 2.0
const Locale * getAvailableLocales (int32_t & count)
Returns a list of the locales for which Calendars are installed.
Parameters
Returns
An array of Locale objects representing the set of locales for which
Calendars are installed. The system retains ownership of this list;
the caller must NOT delete it. Does not include user-registered Calendars.
ICU 2.0
StringEnumeration * getKeywordValuesForLocale (const char * key, const Locale & locale, UBool commonlyUsed, UErrorCode & status)
Given a key and a locale, returns an array of string values in a preferred
order that would make a difference. These are all and only those values where
the open (creation) of the service with the locale formed from the input locale
plus input keyword and that value has different behavior than creation with the
input locale alone.
Parameters
Returns
a string enumeration over keyword values for the given key and the locale.
ICU 4.2
UDate getNow ()
Returns the current UTC (GMT) time measured in milliseconds since 0:00:00 on 1/1/70
(derived from the system time).
Returns
The current UTC time in milliseconds.
ICU 2.0
UBool equals (const Calendar & when, UErrorCode & status)
Compares the Calendar time, whereas Calendar::operator== compares the equality of
Calendar objects.
Parameters
Returns
True if the current time of this Calendar is equal to the time of
Calendar when; false otherwise.
ICU 2.0
UBool before (const Calendar & when, UErrorCode & status)
Returns true if this Calendar's current time is before "when"'s current time.
Parameters
Returns
True if the current time of this Calendar is before the time of
Calendar when; false otherwise.
ICU 2.0
UBool after (const Calendar & when, UErrorCode & status)
Returns true if this Calendar's current time is after "when"'s current time.
Parameters
Returns
True if the current time of this Calendar is after the time of
Calendar when; false otherwise.
ICU 2.0
void add (EDateFields field, int32_t amount, UErrorCode & status)
UDate Arithmetic function. Adds the specified (signed) amount of time to the given
time field, based on the calendar's rules. For example, to subtract 5 days from
the current time of the calendar, call add(Calendar::DATE, -5). When adding on
the month or Calendar::MONTH field, other fields like date might conflict and
need to be changed. For instance, adding 1 month on the date 01/31/96 will result
in 02/29/96.
Adding a positive value always means moving forward in time, so for the Gregorian calendar,
starting with 100 BC and adding +1 to year results in 99 BC (even though this actually reduces
the numeric value of the field itself).
Parameters
void add (UCalendarDateFields field, int32_t amount, UErrorCode & status)
UDate Arithmetic function. Adds the specified (signed) amount of time to the given
time field, based on the calendar's rules. For example, to subtract 5 days from
the current time of the calendar, call add(Calendar::DATE, -5). When adding on
the month or Calendar::MONTH field, other fields like date might conflict and
need to be changed. For instance, adding 1 month on the date 01/31/96 will result
in 02/29/96.
Adding a positive value always means moving forward in time, so for the Gregorian calendar,
starting with 100 BC and adding +1 to year results in 99 BC (even though this actually reduces
the numeric value of the field itself).
Parameters
int32_t fieldDifference (UDate when, EDateFields field, UErrorCode & status)
Return the difference between the given time and the time this
calendar object is set to. If this calendar is set
before
the given time, the returned value will be
positive. If this calendar is set
after
the given
time, the returned value will be negative. The
field
parameter specifies the units of the return
value. For example, if
fieldDifference(when,
Calendar::MONTH)
returns 3, then this calendar is set to
3 months before
when
, and possibly some addition
time less than one month.
As a side effect of this call, this calendar is advanced
toward
when
by the given amount. That is, calling
this method has the side effect of calling
add(field,
n)
, where
n
is the return value.
Usage: To use this method, call it first with the largest
field of interest, then with progressively smaller fields. For
example:
int y = cal->fieldDifference(when, Calendar::YEAR, err);
int m = cal->fieldDifference(when, Calendar::MONTH, err);
int d = cal->fieldDifference(when, Calendar::DATE, err);
computes the difference between
cal
and
when
in years, months, and days.
Note:
fieldDifference()
is
asymmetrical
. That is, in the following code:
cal->setTime(date1, err);
int m1 = cal->fieldDifference(date2, Calendar::MONTH, err);
int d1 = cal->fieldDifference(date2, Calendar::DATE, err);
cal->setTime(date2, err);
int m2 = cal->fieldDifference(date1, Calendar::MONTH, err);
int d2 = cal->fieldDifference(date1, Calendar::DATE, err);
one might expect that
m1 == -m2
&
&
d1 == -d2
.
However, this is not generally the case, because of
irregularities in the underlying calendar system (e.g., the
Gregorian calendar has a varying number of days per month).
Parameters
Returns
the difference, either positive or negative, between
this calendar's time and
when
, in terms of
field
.
int32_t fieldDifference (UDate when, UCalendarDateFields field, UErrorCode & status)
Return the difference between the given time and the time this
calendar object is set to. If this calendar is set
before
the given time, the returned value will be
positive. If this calendar is set
after
the given
time, the returned value will be negative. The
field
parameter specifies the units of the return
value. For example, if
fieldDifference(when,
Calendar::MONTH)
returns 3, then this calendar is set to
3 months before
when
, and possibly some addition
time less than one month.
As a side effect of this call, this calendar is advanced
toward
when
by the given amount. That is, calling
this method has the side effect of calling
add(field,
n)
, where
n
is the return value.
Usage: To use this method, call it first with the largest
field of interest, then with progressively smaller fields. For
example:
int y = cal->fieldDifference(when, Calendar::YEAR, err);
int m = cal->fieldDifference(when, Calendar::MONTH, err);
int d = cal->fieldDifference(when, Calendar::DATE, err);
computes the difference between
cal
and
when
in years, months, and days.
Note:
fieldDifference()
is
asymmetrical
. That is, in the following code:
cal->setTime(date1, err);
int m1 = cal->fieldDifference(date2, Calendar::MONTH, err);
int d1 = cal->fieldDifference(date2, Calendar::DATE, err);
cal->setTime(date2, err);
int m2 = cal->fieldDifference(date1, Calendar::MONTH, err);
int d2 = cal->fieldDifference(date1, Calendar::DATE, err);
one might expect that
m1 == -m2
&
&
d1 == -d2
.
However, this is not generally the case, because of
irregularities in the underlying calendar system (e.g., the
Gregorian calendar has a varying number of days per month).
Parameters
Returns
the difference, either positive or negative, between
this calendar's time and
when
, in terms of
field
.
ICU 2.6.
void adoptTimeZone (TimeZone * value)
Sets the calendar's time zone to be the one passed in. The Calendar takes ownership
of the TimeZone; the caller is no longer responsible for deleting it. If the
given time zone is nullptr, this function has no effect.
Parameters
const TimeZone & getTimeZone ()
Returns a reference to the time zone owned by this calendar. The returned reference
is only valid until clients make another call to adoptTimeZone or setTimeZone,
or this Calendar is destroyed.
Returns
The time zone object associated with this calendar.
ICU 2.0
UBool inDaylightTime (UErrorCode & status)
Queries if the current date for this Calendar is in Daylight Savings Time.
Parameters
Returns
True if the current date for this Calendar is in Daylight Savings Time,
false, otherwise.
ICU 2.0
UCalendarWallTimeOption getRepeatedWallTimeOption ()
Gets the behavior for handling wall time repeating multiple times
at negative time zone offset transitions.
Returns
the behavior for handling repeating wall time, either
UCAL_WALLTIME_FIRST
or
UCAL_WALLTIME_LAST
.
UCalendarWallTimeOption getSkippedWallTimeOption ()
Gets the behavior for handling skipped wall time at positive time zone offset
transitions.
Returns
the behavior for handling skipped wall time, one of
UCAL_WALLTIME_FIRST
,
UCAL_WALLTIME_LAST
and
UCAL_WALLTIME_NEXT_VALID
.
EDaysOfWeek getFirstDayOfWeek ()
Gets what the first day of the week is; e.g., Sunday in US, Monday in France.
Returns
The first day of the week.
UCalendarDaysOfWeek getFirstDayOfWeek (UErrorCode & status)
Gets what the first day of the week is; e.g., Sunday in US, Monday in France.
Parameters
Returns
The first day of the week.
ICU 2.6
uint8_t getMinimalDaysInFirstWeek ()
Gets what the minimal days required in the first week of the year are; e.g., if
the first week is defined as one that contains the first day of the first month
of a year, getMinimalDaysInFirstWeek returns 1. If the minimal days required must
be a full week, getMinimalDaysInFirstWeek returns 7.
Returns
The minimal days required in the first week of the year.
ICU 2.0
int32_t getMinimum (EDateFields field)
Gets the minimum value for the given time field. e.g., for Gregorian
DAY_OF_MONTH, 1.
Parameters
Returns
The minimum value for the given time field.
int32_t getMinimum (UCalendarDateFields field)
Gets the minimum value for the given time field. e.g., for Gregorian
DAY_OF_MONTH, 1.
Parameters
Returns
The minimum value for the given time field.
ICU 2.6.
int32_t getMaximum (EDateFields field)
Gets the maximum value for the given time field. e.g. for Gregorian DAY_OF_MONTH,
31.
Parameters
Returns
The maximum value for the given time field.
int32_t getMaximum (UCalendarDateFields field)
Gets the maximum value for the given time field. e.g. for Gregorian DAY_OF_MONTH,
31.
Parameters
Returns
The maximum value for the given time field.
ICU 2.6.
int32_t getGreatestMinimum (EDateFields field)
Gets the highest minimum value for the given field if varies. Otherwise same as
getMinimum(). For Gregorian, no difference.
Parameters
Returns
The highest minimum value for the given time field.
int32_t getGreatestMinimum (UCalendarDateFields field)
Gets the highest minimum value for the given field if varies. Otherwise same as
getMinimum(). For Gregorian, no difference.
Parameters
Returns
The highest minimum value for the given time field.
ICU 2.6.
int32_t getLeastMaximum (EDateFields field)
Gets the lowest maximum value for the given field if varies. Otherwise same as
getMaximum(). e.g., for Gregorian DAY_OF_MONTH, 28.
Parameters
Returns
The lowest maximum value for the given time field.
int32_t getLeastMaximum (UCalendarDateFields field)
Gets the lowest maximum value for the given field if varies. Otherwise same as
getMaximum(). e.g., for Gregorian DAY_OF_MONTH, 28.
Parameters
Returns
The lowest maximum value for the given time field.
ICU 2.6.
int32_t getActualMinimum (EDateFields field, UErrorCode & status)
Return the minimum value that this field could have, given the current date.
For the Gregorian calendar, this is the same as getMinimum() and getGreatestMinimum().
The version of this function on Calendar uses an iterative algorithm to determine the
actual minimum value for the field. There is almost always a more efficient way to
accomplish this (in most cases, you can simply return getMinimum()). GregorianCalendar
overrides this function with a more efficient implementation.
Parameters
Returns
the minimum of the given field for the current date of this Calendar
int32_t getActualMinimum (UCalendarDateFields field, UErrorCode & status)
Return the minimum value that this field could have, given the current date.
For the Gregorian calendar, this is the same as getMinimum() and getGreatestMinimum().
The version of this function on Calendar uses an iterative algorithm to determine the
actual minimum value for the field. There is almost always a more efficient way to
accomplish this (in most cases, you can simply return getMinimum()). GregorianCalendar
overrides this function with a more efficient implementation.
Parameters
Returns
the minimum of the given field for the current date of this Calendar
ICU 2.6.
int32_t getActualMaximum (UCalendarDateFields field, UErrorCode & status)
Return the maximum value that this field could have, given the current date.
For example, with the date "Feb 3, 1997" and the DAY_OF_MONTH field, the actual
maximum would be 28; for "Feb 3, 1996" it s 29. Similarly for a Hebrew calendar,
for some years the actual maximum for MONTH is 12, and for others 13.
The version of this function on Calendar uses an iterative algorithm to determine the
actual maximum value for the field. There is almost always a more efficient way to
accomplish this (in most cases, you can simply return getMaximum()). GregorianCalendar
overrides this function with a more efficient implementation.
Parameters
Returns
the maximum of the given field for the current date of this Calendar
ICU 2.6.
int32_t get (UCalendarDateFields field, UErrorCode & status)
Gets the value for a given time field. Recalculate the current time field values
if the time value has been changed by a call to setTime(). Return zero for unset
fields if any fields have been explicitly set by a call to set(). To force a
recomputation of all fields regardless of the previous state, call complete().
This method is semantically const, but may alter the object in memory.
Parameters
Returns
The value for the given time field, or zero if the field is unset,
and set() has been called for any other field.
ICU 2.6.
void clear ()
Clears the values of all the time fields, making them both unset and assigning
them a value of zero. The field values will be determined during the next
resolving of time into time fields.
ICU 2.0
void clear (UCalendarDateFields field)
Clears the value in the given time field, both making it unset and assigning it a
value of zero. This field value will be determined during the next resolving of
time into time fields. Clearing UCAL_ORDINAL_MONTH or UCAL_MONTH will
clear both fields.
Parameters
UClassID getDynamicClassID ()
Returns a unique class ID POLYMORPHICALLY. Pure virtual method. This method is to
implement a simple version of RTTI, since not all C++ compilers support genuine
RTTI. Polymorphic operator==() and clone() methods call this method.
<P
>
Concrete subclasses of Calendar must implement getDynamicClassID() and also a
static method and data member:
static UClassID getStaticClassID() { return (UClassID)
&
fgClassID; }
static char fgClassID;
Returns
The class ID for this object. All objects of a given class have the
same class ID. Objects of other classes have different class IDs.
ICU 2.0
const char * getType ()
Returns the calendar type name string for this Calendar object.
The returned string is the legacy ICU calendar attribute value,
for example, "gregorian" or "japanese".
See type="old type name" for the calendar attribute of locale IDs
at http://www.unicode.org/reports/tr35/#Key_Type_Definitions
Sample code for getting the LDML/BCP 47 calendar key value:
Returns
legacy calendar type name string
ICU 49
Code
const char *calType = cal->getType();
if (0 == strcmp(calType, "unknown")) {
// deal with unknown calendar type
} else {
string localeID("root@calendar=");
localeID.append(calType);
char langTag[100];
UErrorCode errorCode = U_ZERO_ERROR;
int32_t length = uloc_toLanguageTag(localeID.c_str(), langTag, (int32_t)sizeof(langTag), true, &errorCode);
if (U_FAILURE(errorCode)) {
// deal with errors & overflow
}
string lang(langTag, length);
size_t caPos = lang.find("-ca-");
lang.erase(0, caPos + 4);
// lang now contains the LDML calendar type
}
UCalendarWeekdayType getDayOfWeekType (UCalendarDaysOfWeek dayOfWeek, UErrorCode & status)
Returns whether the given day of the week is a weekday, a weekend day,
or a day that transitions from one to the other, for the locale and
calendar system associated with this Calendar (the locale's region is
often the most determinant factor). If a transition occurs at midnight,
then the days before and after the transition will have the
type UCAL_WEEKDAY or UCAL_WEEKEND. If a transition occurs at a time
other than midnight, then the day of the transition will have
the type UCAL_WEEKEND_ONSET or UCAL_WEEKEND_CEASE. In this case, the
method getWeekendTransition() will return the point of
transition.
Parameters
Returns
The UCalendarWeekdayType for the day of the week.
ICU 4.4
UDate getTime (UErrorCode & status)
Gets this Calendar's time as milliseconds. May involve recalculation of time due
to previous calls to set time field values. The time specified is non-local UTC
(GMT) time. Although this method is const, this object may actually be changed
(semantically const).
Parameters
Returns
The current time in UTC (GMT) time, or zero if the operation
failed.
ICU 2.0
Defined at line 432 of file ../../third_party/icu/latest/source/i18n/unicode/calendar.h
int32_t getWeekendTransition (UCalendarDaysOfWeek dayOfWeek, UErrorCode & status)
Returns the time during the day at which the weekend begins or ends in
this calendar system. If getDayOfWeekType() returns UCAL_WEEKEND_ONSET
for the specified dayOfWeek, return the time at which the weekend begins.
If getDayOfWeekType() returns UCAL_WEEKEND_CEASE for the specified dayOfWeek,
return the time at which the weekend ends. If getDayOfWeekType() returns
some other UCalendarWeekdayType for the specified dayOfWeek, is it an error condition
(U_ILLEGAL_ARGUMENT_ERROR).
Parameters
Returns
The milliseconds after midnight at which the weekend begins or ends.
ICU 4.4
void ~Calendar ()
destructor
ICU 2.0
Calendar * createInstance (TimeZone * zoneToAdopt, UErrorCode & success)
-------------------------------------
Defined at line 2514 of file ../../third_party/icu/latest/source/i18n/unicode/calendar.h
bool operator== (const Calendar & that)
Compares the equality of two Calendar objects. Objects of different subclasses
are considered unequal. This comparison is very exacting; two Calendar objects
must be in exactly the same state to be considered equal. To compare based on the
represented time, use equals() instead.
Parameters
Returns
true if the given Calendar is the same as this Calendar; false
otherwise.
ICU 2.0
UBool isEquivalentTo (const Calendar & other)
Returns true if the given Calendar object is equivalent to this
one. An equivalent Calendar will behave exactly as this one
does, but it may be set to a different time. By contrast, for
the operator==() method to return true, the other Calendar must
be set to the same time.
Parameters
void roll (EDateFields field, UBool up, UErrorCode & status)
Time Field Rolling function. Rolls (up/down) a single unit of time on the given
time field. For example, to roll the current date up by one day, call
roll(Calendar::DATE, true). When rolling on the year or Calendar::YEAR field, it
will roll the year value in the range between getMinimum(Calendar::YEAR) and the
value returned by getMaximum(Calendar::YEAR). When rolling on the month or
Calendar::MONTH field, other fields like date might conflict and, need to be
changed. For instance, rolling the month up on the date 01/31/96 will result in
02/29/96. Rolling up always means rolling forward in time (unless the limit of the
field is reached, in which case it may pin or wrap), so for Gregorian calendar,
starting with 100 BC and rolling the year up results in 99 BC.
When eras have a definite beginning and end (as in the Chinese calendar, or as in
most eras in the Japanese calendar) then rolling the year past either limit of the
era will cause the year to wrap around. When eras only have a limit at one end,
then attempting to roll the year past that limit will result in pinning the year
at that limit. Note that for most calendars in which era 0 years move forward in
time (such as Buddhist, Hebrew, or Islamic), it is possible for add or roll to
result in negative years for era 0 (that is the only way to represent years before
the calendar epoch).
When rolling on the hour-in-day or Calendar::HOUR_OF_DAY field, it will roll the
hour value in the range between 0 and 23, which is zero-based.
<P
>
NOTE: Do not use this method -- use roll(EDateFields, int, UErrorCode
&
) instead.
Parameters
Defined at line 2530 of file ../../third_party/icu/latest/source/i18n/unicode/calendar.h
void roll (UCalendarDateFields field, UBool up, UErrorCode & status)
-------------------------------------
Defined at line 2523 of file ../../third_party/icu/latest/source/i18n/unicode/calendar.h
void roll (EDateFields field, int32_t amount, UErrorCode & status)
Time Field Rolling function. Rolls by the given amount on the given
time field. For example, to roll the current date up by one day, call
roll(Calendar::DATE, +1, status). When rolling on the month or
Calendar::MONTH field, other fields like date might conflict and, need to be
changed. For instance, rolling the month up on the date 01/31/96 will result in
02/29/96. Rolling by a positive value always means rolling forward in time (unless
the limit of the field is reached, in which case it may pin or wrap), so for
Gregorian calendar, starting with 100 BC and rolling the year by + 1 results in 99 BC.
When eras have a definite beginning and end (as in the Chinese calendar, or as in
most eras in the Japanese calendar) then rolling the year past either limit of the
era will cause the year to wrap around. When eras only have a limit at one end,
then attempting to roll the year past that limit will result in pinning the year
at that limit. Note that for most calendars in which era 0 years move forward in
time (such as Buddhist, Hebrew, or Islamic), it is possible for add or roll to
result in negative years for era 0 (that is the only way to represent years before
the calendar epoch).
When rolling on the hour-in-day or Calendar::HOUR_OF_DAY field, it will roll the
hour value in the range between 0 and 23, which is zero-based.
<P
>
The only difference between roll() and add() is that roll() does not change
the value of more significant fields when it reaches the minimum or maximum
of its range, whereas add() does.
Parameters
void roll (UCalendarDateFields field, int32_t amount, UErrorCode & status)
Time Field Rolling function. Rolls by the given amount on the given
time field. For example, to roll the current date up by one day, call
roll(Calendar::DATE, +1, status). When rolling on the month or
Calendar::MONTH field, other fields like date might conflict and, need to be
changed. For instance, rolling the month up on the date 01/31/96 will result in
02/29/96. Rolling by a positive value always means rolling forward in time (unless
the limit of the field is reached, in which case it may pin or wrap), so for
Gregorian calendar, starting with 100 BC and rolling the year by + 1 results in 99 BC.
When eras have a definite beginning and end (as in the Chinese calendar, or as in
most eras in the Japanese calendar) then rolling the year past either limit of the
era will cause the year to wrap around. When eras only have a limit at one end,
then attempting to roll the year past that limit will result in pinning the year
at that limit. Note that for most calendars in which era 0 years move forward in
time (such as Buddhist, Hebrew, or Islamic), it is possible for add or roll to
result in negative years for era 0 (that is the only way to represent years before
the calendar epoch).
When rolling on the hour-in-day or Calendar::HOUR_OF_DAY field, it will roll the
hour value in the range between 0 and 23, which is zero-based.
<P
>
The only difference between roll() and add() is that roll() does not change
the value of more significant fields when it reaches the minimum or maximum
of its range, whereas add() does.
Parameters
void setTimeZone (const TimeZone & zone)
Sets the calendar's time zone to be the same as the one passed in. The TimeZone
passed in is _not_ adopted; the client is still responsible for deleting it.
Parameters
TimeZone * orphanTimeZone ()
Returns the time zone owned by this calendar. The caller owns the returned object
and must delete it when done. After this call, the new time zone associated
with this Calendar is the default TimeZone as returned by TimeZone::createDefault().
Returns
The time zone object which was associated with this calendar.
ICU 2.0
void setLenient (UBool lenient)
Specifies whether or not date/time interpretation is to be lenient. With lenient
interpretation, a date such as "February 942, 1996" will be treated as being
equivalent to the 941st day after February 1, 1996. With strict interpretation,
such dates will cause an error when computing time from the time field values
representing the dates.
Parameters
UBool isLenient ()
Tells whether date/time interpretation is to be lenient.
Returns
True tells that date/time interpretation is to be lenient.
ICU 2.0
void setRepeatedWallTimeOption (UCalendarWallTimeOption option)
Sets the behavior for handling wall time repeating multiple times
at negative time zone offset transitions. For example, 1:30 AM on
November 6, 2011 in US Eastern time (America/New_York) occurs twice;
1:30 AM EDT, then 1:30 AM EST one hour later. When
UCAL_WALLTIME_FIRST
is used, the wall time 1:30AM in this example will be interpreted as 1:30 AM EDT
(first occurrence). When
UCAL_WALLTIME_LAST
is used, it will be
interpreted as 1:30 AM EST (last occurrence). The default value is
UCAL_WALLTIME_LAST
.
Note:
When
UCAL_WALLTIME_NEXT_VALID
is not a valid
option for this. When the argument is neither
UCAL_WALLTIME_FIRST
nor
UCAL_WALLTIME_LAST
, this method has no effect and will keep
the current setting.
Parameters
void setSkippedWallTimeOption (UCalendarWallTimeOption option)
Sets the behavior for handling skipped wall time at positive time zone offset
transitions. For example, 2:30 AM on March 13, 2011 in US Eastern time (America/New_York)
does not exist because the wall time jump from 1:59 AM EST to 3:00 AM EDT. When
UCAL_WALLTIME_FIRST
is used, 2:30 AM is interpreted as 30 minutes before 3:00 AM
EDT, therefore, it will be resolved as 1:30 AM EST. When
UCAL_WALLTIME_LAST
is used, 2:30 AM is interpreted as 31 minutes after 1:59 AM EST, therefore, it will be
resolved as 3:30 AM EDT. When
UCAL_WALLTIME_NEXT_VALID
is used, 2:30 AM will
be resolved as next valid wall time, that is 3:00 AM EDT. The default value is
UCAL_WALLTIME_LAST
.
Note:
This option is effective only when this calendar is lenient.
When the calendar is strict, such non-existing wall time will cause an error.
ICU 49
Parameters
void setFirstDayOfWeek (UCalendarDaysOfWeek value)
Sets what the first day of the week is; e.g., Sunday in US, Monday in France.
Parameters
void setMinimalDaysInFirstWeek (uint8_t value)
Sets what the minimal days required in the first week of the year are; For
example, if the first week is defined as one that contains the first day of the
first month of a year, call the method with value 1. If it must be a full week,
use value 7.
Parameters
UBool isSet (UCalendarDateFields field)
Determines if the given time field has a value set. This can affect in the
resolving of time in Calendar. Unset fields have a value of zero, by definition.
Parameters
Returns
True if the given time field has a value set; false otherwise.
ICU 2.6.
void set (UCalendarDateFields field, int32_t value)
Sets the given time field with the given value.
Parameters
void set (int32_t year, int32_t month, int32_t date)
Sets the values for the fields YEAR, MONTH, and DATE. Other field values are
retained; call clear() first if this is not desired.
Parameters
void set (int32_t year, int32_t month, int32_t date, int32_t hour, int32_t minute)
Sets the values for the fields YEAR, MONTH, DATE, HOUR_OF_DAY, and MINUTE. Other
field values are retained; call clear() first if this is not desired.
Parameters
void set (int32_t year, int32_t month, int32_t date, int32_t hour, int32_t minute, int32_t second)
Sets the values for the fields YEAR, MONTH, DATE, HOUR_OF_DAY, MINUTE, and SECOND.
Other field values are retained; call clear() first if this is not desired.
Parameters
UBool isWeekend (UDate date, UErrorCode & status)
Returns true if the given UDate is in the weekend in
this calendar system.
Parameters
Returns
true if the given UDate is in the weekend in
this calendar system, false otherwise.
ICU 4.4
UBool isWeekend ()
Returns true if this Calendar's current date-time is in the weekend in
this calendar system.
Returns
true if this Calendar's current date-time is in the weekend in
this calendar system, false otherwise.
ICU 4.4
bool inTemporalLeapYear (UErrorCode & status)
Returns true if the date is in a leap year. Recalculate the current time
field values if the time value has been changed by a call to * setTime().
This method is semantically const, but may alter the object in memory.
A "leap year" is a year that contains more days than other years (for
solar or lunar calendars) or more months than other years (for lunisolar
calendars like Hebrew or Chinese), as defined in the ECMAScript Temporal
proposal.
Parameters
Returns
True if the date in the fields is in a Temporal proposal
defined leap year. False otherwise.
ICU 73
const char * getTemporalMonthCode (UErrorCode & status)
Gets The Temporal monthCode value corresponding to the month for the date.
The value is a string identifier that starts with the literal grapheme
"M" followed by two graphemes representing the zero-padded month number
of the current month in a normal (non-leap) year and suffixed by an
optional literal grapheme "L" if this is a leap month in a lunisolar
calendar. The 25 possible values are "M01" .. "M13" and "M01L" .. "M12L".
For the Hebrew calendar, the values are "M01" .. "M12" for non-leap year, and
"M01" .. "M05", "M05L", "M06" .. "M12" for leap year.
For the Chinese calendar, the values are "M01" .. "M12" for non-leap year and
in leap year with another monthCode in "M01L" .. "M12L".
For Coptic and Ethiopian calendar, the Temporal monthCode values for any
years are "M01" to "M13".
Parameters
Returns
One of 25 possible strings in {"M01".."M13", "M01L".."M12L"}.
ICU 73
void setTemporalMonthCode (const char * temporalMonth, UErrorCode & status)
Sets The Temporal monthCode which is a string identifier that starts
with the literal grapheme "M" followed by two graphemes representing
the zero-padded month number of the current month in a normal
(non-leap) year and suffixed by an optional literal grapheme "L" if this
is a leap month in a lunisolar calendar. The 25 possible values are
"M01" .. "M13" and "M01L" .. "M12L". For Hebrew calendar, the values are
"M01" .. "M12" for non-leap years, and "M01" .. "M05", "M05L", "M06"
.. "M12" for leap year.
For the Chinese calendar, the values are "M01" .. "M12" for non-leap year and
in leap year with another monthCode in "M01L" .. "M12L".
For Coptic and Ethiopian calendar, the Temporal monthCode values for any
years are "M01" to "M13".
ICU 73
Parameters
StringEnumeration * getAvailableLocales ()
Return a StringEnumeration over the locales available at the time of the call,
including registered locales.
Returns
a StringEnumeration over the locales available at the time of the call
void setTime (UDate date, UErrorCode & status)
Sets this Calendar's current time with the given UDate. The time specified should
be in non-local UTC (GMT) time.
Parameters
Defined at line 444 of file ../../third_party/icu/latest/source/i18n/unicode/calendar.h
bool operator!= (const Calendar & that)
Compares the inequality of two Calendar objects.
Parameters
Returns
true if the given Calendar is not the same as this Calendar; false
otherwise.
ICU 2.0
Defined at line 467 of file ../../third_party/icu/latest/source/i18n/unicode/calendar.h
URegistryKey registerFactory (ICUServiceFactory * toAdopt, UErrorCode & status)
Register a new Calendar factory. The factory will be adopted.
INTERNAL in 2.6
Because ICU may choose to cache Calendars internally, this must
be called at application startup, prior to any calls to
Calendar::createInstance to avoid undefined behavior.
Parameters
Returns
a registry key that can be used to unregister this factory
UBool unregister (URegistryKey key, UErrorCode & status)
Unregister a previously-registered CalendarFactory using the key returned from the
register call. Key becomes invalid after a successful call and should not be used again.
The CalendarFactory corresponding to the key will be deleted.
INTERNAL in 2.6
Because ICU may choose to cache Calendars internally, this should
be called during application shutdown, after all calls to
Calendar::createInstance to avoid undefined behavior.
Parameters
Returns
true if the factory for the key was successfully unregistered
UBool haveDefaultCentury ()
Returns
true if this calendar has a default century (i.e. 03 -> 2003)
UDate defaultCenturyStart ()
Returns
the start of the default century, as a UDate
int32_t defaultCenturyStartYear ()
Returns
the beginning year of the default century, as a year
Locale getLocale (ULocDataLocaleType type, UErrorCode & status)
Get the locale for this calendar object. You can choose between valid and actual locale.
Parameters
Returns
the locale
ICU 2.8
int32_t getRelatedYear (UErrorCode & status)
Returns
The related Gregorian year; will be obtained by modifying the value
obtained by get from UCAL_EXTENDED_YEAR field
void setRelatedYear (int32_t year)
Parameters
const char * getLocaleID (ULocDataLocaleType type, UErrorCode & status)
Get the locale for this calendar object. You can choose between valid and actual locale.
Parameters
Returns
the locale
Calendar * makeInstance (const Locale & locale, UErrorCode & status)
Creates a new Calendar from a Locale for the cache.
This method does not set the time or timezone in returned calendar.
Parameters
Returns
the new Calendar object with no time or timezone set.
void getCalendarTypeFromLocale (const Locale & locale, char * typeBuffer, int32_t typeBufferSize, UErrorCode & status)
Get the calendar type for given locale.
Parameters
Protected Methods
int32_t internalGet (EDateFields field)
Gets the value for a given time field. Subclasses can use this function to get
field values without forcing recomputation of time.
Parameters
Returns
The value for the given time field.
Defined at line 1526 of file ../../third_party/icu/latest/source/i18n/unicode/calendar.h
int32_t internalGet (UCalendarDateFields field, int32_t defaultValue)
Gets the value for a given time field. Subclasses can use this function to get
field values without forcing recomputation of time. If the field's stamp is UNSET,
the defaultValue is used.
Parameters
Returns
The value for the given time field.
Defined at line 1540 of file ../../third_party/icu/latest/source/i18n/unicode/calendar.h
int32_t internalGet (UCalendarDateFields field)
Gets the value for a given time field. Subclasses can use this function to get
field values without forcing recomputation of time.
Parameters
Returns
The value for the given time field.
Defined at line 1550 of file ../../third_party/icu/latest/source/i18n/unicode/calendar.h
bool isEra0CountingBackward ()
The year in this calendar is counting from 1 backward if the era is 0.
Returns
The year in era 0 of this calendar is counting backward from 1.
Defined at line 1557 of file ../../third_party/icu/latest/source/i18n/unicode/calendar.h
UDate internalGetTime ()
Get the current time without recomputing.
Returns
the current time without recomputing.
ICU 2.0
Defined at line 1891 of file ../../third_party/icu/latest/source/i18n/unicode/calendar.h
void internalSetTime (UDate time)
Set the current time without affecting flags or fields.
Parameters
Returns
the current time without recomputing.
ICU 2.0
Defined at line 1900 of file ../../third_party/icu/latest/source/i18n/unicode/calendar.h
int32_t getGregorianYear ()
Return the extended year on the Gregorian calendar as computed by
computeGregorianFields()
.
Defined at line 1959 of file ../../third_party/icu/latest/source/i18n/unicode/calendar.h
int32_t getGregorianMonth ()
Return the month (0-based) on the Gregorian calendar as computed by
computeGregorianFields()
.
Defined at line 1968 of file ../../third_party/icu/latest/source/i18n/unicode/calendar.h
int32_t getGregorianDayOfYear ()
Return the day of year (1-based) on the Gregorian calendar as
computed by
computeGregorianFields()
.
Defined at line 1977 of file ../../third_party/icu/latest/source/i18n/unicode/calendar.h
int32_t getGregorianDayOfMonth ()
Return the day of month (1-based) on the Gregorian calendar as
computed by
computeGregorianFields()
.
Defined at line 1986 of file ../../third_party/icu/latest/source/i18n/unicode/calendar.h
void Calendar (UErrorCode & success)
Constructs a Calendar with the default time zone as returned by
TimeZone::createInstance(), and the default locale.
Parameters
void Calendar (const Calendar & source)
Copy constructor
Parameters
Calendar & operator= (const Calendar & right)
Default assignment operator
Parameters
void Calendar (TimeZone * zone, const Locale & aLocale, UErrorCode & success)
Constructs a Calendar with the given time zone and locale. Clients are no longer
responsible for deleting the given time zone object after it's adopted.
Parameters
void Calendar (const TimeZone & zone, const Locale & aLocale, UErrorCode & success)
Constructs a Calendar with the given time zone and locale.
Parameters
void computeTime (UErrorCode & status)
Converts Calendar's time field values to GMT as milliseconds.
Parameters
void computeFields (UErrorCode & status)
Converts GMT as milliseconds to time field values. This allows you to sync up the
time field values with a new time that is set for the calendar. This method
does NOT recompute the time first; to recompute the time, then the fields, use
the method complete().
Parameters
double getTimeInMillis (UErrorCode & status)
Gets this Calendar's current time as a long.
Parameters
Returns
the current time as UTC milliseconds from the epoch.
ICU 2.0
void setTimeInMillis (double millis, UErrorCode & status)
Sets this Calendar's current time from the given long value.
Parameters
void complete (UErrorCode & status)
Recomputes the current time from currently set fields, and then fills in any
unset fields in the time field list.
Parameters
int32_t internalGetMonth (UErrorCode & status)
Use this function instead of internalGet(UCAL_MONTH). The implementation
check the timestamp of UCAL_MONTH and UCAL_ORDINAL_MONTH and use the
one set later. The subclass should override it to conver the value of UCAL_ORDINAL_MONTH
to UCAL_MONTH correctly if UCAL_ORDINAL_MONTH has higher priority.
Returns
The value for the UCAL_MONTH.
int32_t internalGetMonth (int32_t defaultValue, UErrorCode & status)
Use this function instead of internalGet(UCAL_MONTH, defaultValue). The implementation
check the timestamp of UCAL_MONTH and UCAL_ORDINAL_MONTH and use the
one set later. The subclass should override it to conver the value of UCAL_ORDINAL_MONTH
to UCAL_MONTH correctly if UCAL_ORDINAL_MONTH has higher priority.
Parameters
Returns
The value for the UCAL_MONTH.
void internalSet (EDateFields field, int32_t value)
Sets the value for a given time field. This is a fast internal method for
subclasses. It does not affect the areFieldsInSync, isTimeSet, or areAllFieldsSet
flags.
Parameters
void internalSet (UCalendarDateFields field, int32_t value)
Fast method for subclasses. The caller must maintain fUserSetDSTOffset and
fUserSetZoneOffset, as well as the isSet[] array.
Defined at line 2545 of file ../../third_party/icu/latest/source/i18n/unicode/calendar.h
void prepareGetActual (UCalendarDateFields field, UBool isMinimum, UErrorCode & status)
Prepare this calendar for computing the actual minimum or maximum.
This method modifies this calendar's fields; it is called on a
temporary calendar.
int32_t handleGetLimit (UCalendarDateFields field, ELimitType limitType)
Subclass API for defining limits of different types.
Subclasses must implement this method to return limits for the
following fields:
UCAL_ERA
UCAL_YEAR
UCAL_MONTH
UCAL_WEEK_OF_YEAR
UCAL_WEEK_OF_MONTH
UCAL_DATE (DAY_OF_MONTH on Java)
UCAL_DAY_OF_YEAR
UCAL_DAY_OF_WEEK_IN_MONTH
UCAL_YEAR_WOY
UCAL_EXTENDED_YEAR
Parameters
int32_t getLimit (UCalendarDateFields field, ELimitType limitType)
Return a limit for a field.
Parameters
int64_t handleComputeMonthStart (int32_t eyear, int32_t month, UBool useMonth, UErrorCode & status)
Return the Julian day number of day before the first day of the
given month in the given extended year. Subclasses should override
this method to implement their calendar system.
Parameters
Returns
the Julian day number of the day before the first
day of the given month and year
int32_t handleGetMonthLength (int32_t extendedYear, int32_t month, UErrorCode & status)
Return the number of days in the given month of the given extended
year of this calendar system. Subclasses should override this
method if they can provide a more correct or more efficient
implementation than the default implementation in Calendar.
int32_t handleGetYearLength (int32_t eyear, UErrorCode & status)
Return the number of days in the given extended year of this
calendar system. Subclasses should override this method if they can
provide a more correct or more efficient implementation than the
default implementation in Calendar.
int32_t handleGetExtendedYear (UErrorCode & status)
Return the extended year defined by the current fields. This will
use the UCAL_EXTENDED_YEAR field or the UCAL_YEAR and supra-year fields (such
as UCAL_ERA) specific to the calendar system, depending on which set of
fields is newer.
Parameters
Returns
the extended year
int32_t handleComputeJulianDay (UCalendarDateFields bestField, UErrorCode & status)
Subclasses may override this. This method calls
handleGetMonthLength() to obtain the calendar-specific month
length.
Parameters
Returns
julian day specified by calendar fields.
int32_t handleGetExtendedYearFromWeekFields (int32_t yearWoy, int32_t woy, UErrorCode & status)
Subclasses must override this to convert from week fields
(YEAR_WOY and WEEK_OF_YEAR) to an extended year in the case
where YEAR, EXTENDED_YEAR are not set.
The Calendar implementation assumes yearWoy is in extended gregorian form
Returns
the extended year, UCAL_EXTENDED_YEAR
void validateField (UCalendarDateFields field, UErrorCode & status)
Validate a single field of this calendar. Subclasses should
override this method to validate any calendar-specific fields.
Generic fields can be handled by `Calendar::validateField()`.
int32_t computeJulianDay (UErrorCode & status)
Compute the Julian day from fields. Will determine whether to use
the JULIAN_DAY field directly, or other fields.
Parameters
Returns
the julian day
double computeMillisInDay ()
Compute the milliseconds in the day from the fields. This is a
value from 0 to 23:59:59.999 inclusive, unless fields are out of
range, in which case it can be an arbitrary value. This value
reflects local zone wall time.
int32_t computeZoneOffset (double millis, double millisInDay, UErrorCode & ec)
This method can assume EXTENDED_YEAR has been set.
Parameters
int32_t newestStamp (UCalendarDateFields start, UCalendarDateFields end, int32_t bestSoFar)
Determine the best stamp in a range.
Parameters
Returns
the stamp value of the best stamp
UCalendarDateFields resolveFields (const UFieldResolutionTable * precedenceTable)
Given a precedence table, return the newest field combination in
the table, or UCAL_FIELD_COUNT if none is found.
The precedence table is a 3-dimensional array of integers. It
may be thought of as an array of groups. Each group is an array of
lines. Each line is an array of field numbers. Within a line, if
all fields are set, then the time stamp of the line is taken to be
the stamp of the most recently set field. If any field of a line is
unset, then the line fails to match. Within a group, the line with
the newest time stamp is selected. The first field of the line is
returned to indicate which line matched.
In some cases, it may be desirable to map a line to field that
whose stamp is NOT examined. For example, if the best field is
DAY_OF_WEEK then the DAY_OF_WEEK_IN_MONTH algorithm may be used. In
order to do this, insert the value
kResolveRemap | F
at
the start of the line, where
F
is the desired return
field value. This field will NOT be examined; it only determines
the return value if the other fields in the line are the newest.
If all lines of a group contain at least one unset field, then no
line will match, and the group as a whole will fail to match. In
that case, the next group will be processed. If all groups fail to
match, then UCAL_FIELD_COUNT is returned.
const UFieldResolutionTable * getFieldResolutionTable ()
UCalendarDateFields newerField (UCalendarDateFields defaultField, UCalendarDateFields alternateField)
Return the field that is newer, either defaultField, or
alternateField. If neither is newer or neither is set, return defaultField.
void handleComputeFields (int32_t julianDay, UErrorCode & status)
Subclasses may override this method to compute several fields
specific to each calendar system. These are:
ERA
YEAR
MONTH
DAY_OF_MONTH
DAY_OF_YEAR
EXTENDED_YEAR
Subclasses can refer to the DAY_OF_WEEK and DOW_LOCAL fields, which
will be set when this method is called. Subclasses can also call
the getGregorianXxx() methods to obtain Gregorian calendar
equivalents for the given Julian day.
In addition, subclasses should compute any subclass-specific
fields, that is, fields from BASE_FIELD_COUNT to
getFieldCount() - 1.
The default implementation in
Calendar
implements
a pure proleptic Gregorian calendar.
int32_t getDefaultMonthInYear (int32_t eyear, UErrorCode & status)
Called by computeJulianDay. Returns the default month (0-based) for the year,
taking year and era into account. Defaults to 0 for Gregorian, which doesn't care.
Parameters
int32_t getDefaultDayInMonth (int32_t eyear, int32_t month, UErrorCode & status)
Called by computeJulianDay. Returns the default day (1-based) for the month,
taking currently-set year and era into account. Defaults to 1 for Gregorian.
Parameters
void pinField (UCalendarDateFields field, UErrorCode & status)
Adjust the specified field so that it is within
the allowable range for the date to which this calendar is set.
For example, in a Gregorian calendar pinning the {
int32_t weekNumber (int32_t desiredDay, int32_t dayOfPeriod, int32_t dayOfWeek)
Return the week number of a day, within a period. This may be the week number in
a year or the week number in a month. Usually this will be a value >= 1, but if
some initial days of the period are excluded from week 1, because
{
int32_t weekNumber (int32_t dayOfPeriod, int32_t dayOfWeek)
Return the week number of a day, within a period. This may be the week number in
a year, or the week number in a month. Usually this will be a value >= 1, but if
some initial days of the period are excluded from week 1, because
{
Defined at line 2564 of file ../../third_party/icu/latest/source/i18n/unicode/calendar.h
int32_t getLocalDOW (UErrorCode & status)
returns the local DOW, valid range 0..6
void computeGregorianFields (int32_t julianDay, UErrorCode & ec)
Compute the Gregorian calendar year, month, and day of month from the
Julian day. These values are not stored in fields, but in member
variables gregorianXxx. They are used for time zone computations and by
subclasses that are Gregorian derivatives. Subclasses may call this
method to perform a Gregorian calendar millis->fields computation.
uint8_t julianDayToDayOfWeek (int32_t julian)
Convert a quasi Julian date to the day of the week. The Julian date used here is
not a true Julian date, since it is measured from midnight, not noon. Return
value is one-based.
Parameters
Returns
Day number from 1..7 (SUN..SAT).
Enumerations
enum EDateFields
| Name | Value |
|---|---|
| ERA | 0 |
| YEAR | 1 |
| MONTH | 2 |
| WEEK_OF_YEAR | 3 |
| WEEK_OF_MONTH | 4 |
| DATE | 5 |
| DAY_OF_YEAR | 6 |
| DAY_OF_WEEK | 7 |
| DAY_OF_WEEK_IN_MONTH | 8 |
| AM_PM | 9 |
| HOUR | 10 |
| HOUR_OF_DAY | 11 |
| MINUTE | 12 |
| SECOND | 13 |
| MILLISECOND | 14 |
| ZONE_OFFSET | 15 |
| DST_OFFSET | 16 |
| YEAR_WOY | 17 |
| DOW_LOCAL | 18 |
| EXTENDED_YEAR | 19 |
| JULIAN_DAY | 20 |
| MILLISECONDS_IN_DAY | 21 |
| IS_LEAP_MONTH | 22 |
| FIELD_COUNT | UCAL_FIELD_COUNT |
Field IDs for date and time. Used to specify date/time fields. ERA is calendar
specific. Example ranges given are for illustration only; see specific Calendar
subclasses for actual ranges.
Defined at line 199 of file ../../third_party/icu/latest/source/i18n/unicode/calendar.h
enum EDaysOfWeek
| Name | Value |
|---|---|
| SUNDAY | 1 |
| MONDAY | 2 |
| TUESDAY | 3 |
| WEDNESDAY | 4 |
| THURSDAY | 5 |
| FRIDAY | 6 |
| SATURDAY | 7 |
Useful constant for days of week. Note: Calendar day-of-week is 1-based. Clients
who create locale resources for the field of first-day-of-week should be aware of
this. For instance, in US locale, first-day-of-week is set to 1, i.e., SUNDAY.
Defined at line 244 of file ../../third_party/icu/latest/source/i18n/unicode/calendar.h
enum EMonths
| Name | Value |
|---|---|
| JANUARY | 0 |
| FEBRUARY | 1 |
| MARCH | 2 |
| APRIL | 3 |
| MAY | 4 |
| JUNE | 5 |
| JULY | 6 |
| AUGUST | 7 |
| SEPTEMBER | 8 |
| OCTOBER | 9 |
| NOVEMBER | 10 |
| DECEMBER | 11 |
| UNDECIMBER | 12 |
Useful constants for month. Note: Calendar month is 0-based.
Defined at line 258 of file ../../third_party/icu/latest/source/i18n/unicode/calendar.h
enum EAmpm
| Name | Value |
|---|---|
| AM | 0 |
| PM | 1 |
Useful constants for hour in 12-hour clock. Used in GregorianCalendar.
Defined at line 278 of file ../../third_party/icu/latest/source/i18n/unicode/calendar.h
enum ELimitType
| Name | Value |
|---|---|
| UCAL_LIMIT_MINIMUM | 0 |
| UCAL_LIMIT_GREATEST_MINIMUM | 1 |
| UCAL_LIMIT_LEAST_MAXIMUM | 2 |
| UCAL_LIMIT_MAXIMUM | 3 |
| UCAL_LIMIT_COUNT | 4 |
Limit enums. Not in sync with UCalendarLimitType (refers to internal fields).
Defined at line 1622 of file ../../third_party/icu/latest/source/i18n/unicode/calendar.h
enum
| Name | Value |
|---|---|
| kUnset | 0 |
| kInternallySet | 1 |
| kMinimumUserStamp | 2 |
Special values of stamp[]
ICU 2.0
Defined at line 1912 of file ../../third_party/icu/latest/source/i18n/unicode/calendar.h
Friends
class DefaultCalendarFactory
class CalendarService
class CalendarFactory