ICU 75.1 75.1
|
Concrete class which provides the standard calendar used by most of the world. More...
#include <gregocal.h>
Public Types | |
enum | EEras { BC , AD } |
Useful constants for GregorianCalendar and TimeZone. More... | |
Public Types inherited from icu::Calendar | |
enum | EDateFields { ERA , YEAR , MONTH , WEEK_OF_YEAR , WEEK_OF_MONTH , DATE , DAY_OF_YEAR , DAY_OF_WEEK , DAY_OF_WEEK_IN_MONTH , AM_PM , HOUR , HOUR_OF_DAY , MINUTE , SECOND , MILLISECOND , ZONE_OFFSET , DST_OFFSET , YEAR_WOY , DOW_LOCAL , EXTENDED_YEAR , JULIAN_DAY , MILLISECONDS_IN_DAY , IS_LEAP_MONTH , FIELD_COUNT = UCAL_FIELD_COUNT } |
Field IDs for date and time. More... | |
enum | EDaysOfWeek { SUNDAY = 1 , MONDAY , TUESDAY , WEDNESDAY , THURSDAY , FRIDAY , SATURDAY } |
Useful constant for days of week. More... | |
enum | EMonths { JANUARY , FEBRUARY , MARCH , APRIL , MAY , JUNE , JULY , AUGUST , SEPTEMBER , OCTOBER , NOVEMBER , DECEMBER , UNDECIMBER } |
Useful constants for month. More... | |
enum | EAmpm { AM , PM } |
Useful constants for hour in 12-hour clock. More... | |
Public Member Functions | |
GregorianCalendar (UErrorCode &success) | |
Constructs a default GregorianCalendar using the current time in the default time zone with the default locale. | |
GregorianCalendar (TimeZone *zoneToAdopt, UErrorCode &success) | |
Constructs a GregorianCalendar based on the current time in the given time zone with the default locale. | |
GregorianCalendar (const TimeZone &zone, UErrorCode &success) | |
Constructs a GregorianCalendar based on the current time in the given time zone with the default locale. | |
GregorianCalendar (const Locale &aLocale, UErrorCode &success) | |
Constructs a GregorianCalendar based on the current time in the default time zone with the given locale. | |
GregorianCalendar (TimeZone *zoneToAdopt, const Locale &aLocale, UErrorCode &success) | |
Constructs a GregorianCalendar based on the current time in the given time zone with the given locale. | |
GregorianCalendar (const TimeZone &zone, const Locale &aLocale, UErrorCode &success) | |
Constructs a GregorianCalendar based on the current time in the given time zone with the given locale. | |
GregorianCalendar (int32_t year, int32_t month, int32_t date, UErrorCode &success) | |
Constructs a GregorianCalendar with the given AD date set in the default time zone with the default locale. | |
GregorianCalendar (int32_t year, int32_t month, int32_t date, int32_t hour, int32_t minute, UErrorCode &success) | |
Constructs a GregorianCalendar with the given AD date and time set for the default time zone with the default locale. | |
GregorianCalendar (int32_t year, int32_t month, int32_t date, int32_t hour, int32_t minute, int32_t second, UErrorCode &success) | |
Constructs a GregorianCalendar with the given AD date and time set for the default time zone with the default locale. | |
virtual | ~GregorianCalendar () |
Destructor. | |
GregorianCalendar (const GregorianCalendar &source) | |
Copy constructor. | |
GregorianCalendar & | operator= (const GregorianCalendar &right) |
Default assignment operator. | |
virtual GregorianCalendar * | clone () const override |
Create and return a polymorphic copy of this calendar. | |
void | setGregorianChange (UDate date, UErrorCode &success) |
Sets the GregorianCalendar change date. | |
UDate | getGregorianChange () const |
Gets the Gregorian Calendar change date. | |
UBool | isLeapYear (int32_t year) const |
Return true if the given year is a leap year. | |
virtual UBool | isEquivalentTo (const Calendar &other) const override |
Returns true if the given Calendar object is equivalent to this one. | |
virtual void | roll (EDateFields field, int32_t amount, UErrorCode &status) override |
(Overrides Calendar) Rolls up or down by the given amount in the specified field. | |
virtual void | roll (UCalendarDateFields field, int32_t amount, UErrorCode &status) override |
(Overrides Calendar) Rolls up or down by the given amount in the specified field. | |
int32_t | getActualMinimum (EDateFields field) const |
Return the minimum value that this field could have, given the current date. | |
int32_t | getActualMinimum (EDateFields field, UErrorCode &status) const |
Return the minimum value that this field could have, given the current date. | |
int32_t | getActualMinimum (UCalendarDateFields field, UErrorCode &status) const override |
Return the minimum value that this field could have, given the current date. | |
virtual int32_t | getActualMaximum (UCalendarDateFields field, UErrorCode &status) const override |
Return the maximum value that this field could have, given the current date. | |
virtual UClassID | getDynamicClassID () const override |
Override Calendar Returns a unique class ID POLYMORPHICALLY. | |
virtual const char * | getType () const override |
Returns the calendar type name string for this Calendar object. | |
Public Member Functions inherited from icu::Calendar | |
virtual | ~Calendar () |
destructor | |
UDate | getTime (UErrorCode &status) const |
Gets this Calendar's time as milliseconds. | |
void | setTime (UDate date, UErrorCode &status) |
Sets this Calendar's current time with the given UDate. | |
virtual bool | operator== (const Calendar &that) const |
Compares the equality of two Calendar objects. | |
bool | operator!= (const Calendar &that) const |
Compares the inequality of two Calendar objects. | |
UBool | equals (const Calendar &when, UErrorCode &status) const |
Compares the Calendar time, whereas Calendar::operator== compares the equality of Calendar objects. | |
UBool | before (const Calendar &when, UErrorCode &status) const |
Returns true if this Calendar's current time is before "when"'s current time. | |
UBool | after (const Calendar &when, UErrorCode &status) const |
Returns true if this Calendar's current time is after "when"'s current time. | |
virtual void | add (EDateFields field, int32_t amount, UErrorCode &status) |
UDate Arithmetic function. | |
virtual void | add (UCalendarDateFields field, int32_t amount, UErrorCode &status) |
UDate Arithmetic function. | |
void | roll (EDateFields field, UBool up, UErrorCode &status) |
Time Field Rolling function. | |
void | roll (UCalendarDateFields field, UBool up, UErrorCode &status) |
Time Field Rolling function. | |
virtual 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. | |
virtual 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. | |
void | adoptTimeZone (TimeZone *value) |
Sets the calendar's time zone to be the one passed in. | |
void | setTimeZone (const TimeZone &zone) |
Sets the calendar's time zone to be the same as the one passed in. | |
const TimeZone & | getTimeZone () const |
Returns a reference to the time zone owned by this calendar. | |
TimeZone * | orphanTimeZone () |
Returns the time zone owned by this calendar. | |
virtual UBool | inDaylightTime (UErrorCode &status) const |
Queries if the current date for this Calendar is in Daylight Savings Time. | |
void | setLenient (UBool lenient) |
Specifies whether or not date/time interpretation is to be lenient. | |
UBool | isLenient () const |
Tells whether date/time interpretation is to be lenient. | |
void | setRepeatedWallTimeOption (UCalendarWallTimeOption option) |
Sets the behavior for handling wall time repeating multiple times at negative time zone offset transitions. | |
UCalendarWallTimeOption | getRepeatedWallTimeOption () const |
Gets the behavior for handling wall time repeating multiple times at negative time zone offset transitions. | |
void | setSkippedWallTimeOption (UCalendarWallTimeOption option) |
Sets the behavior for handling skipped wall time at positive time zone offset transitions. | |
UCalendarWallTimeOption | getSkippedWallTimeOption () const |
Gets the behavior for handling skipped wall time at positive time zone offset transitions. | |
void | setFirstDayOfWeek (UCalendarDaysOfWeek value) |
Sets what the first day of the week is; e.g., Sunday in US, Monday in France. | |
EDaysOfWeek | getFirstDayOfWeek () const |
Gets what the first day of the week is; e.g., Sunday in US, Monday in France. | |
UCalendarDaysOfWeek | getFirstDayOfWeek (UErrorCode &status) const |
Gets what the first day of the week is; e.g., Sunday in US, Monday in France. | |
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. | |
uint8_t | getMinimalDaysInFirstWeek () const |
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. | |
virtual int32_t | getMinimum (EDateFields field) const |
Gets the minimum value for the given time field. | |
virtual int32_t | getMinimum (UCalendarDateFields field) const |
Gets the minimum value for the given time field. | |
virtual int32_t | getMaximum (EDateFields field) const |
Gets the maximum value for the given time field. | |
virtual int32_t | getMaximum (UCalendarDateFields field) const |
Gets the maximum value for the given time field. | |
virtual int32_t | getGreatestMinimum (EDateFields field) const |
Gets the highest minimum value for the given field if varies. | |
virtual int32_t | getGreatestMinimum (UCalendarDateFields field) const |
Gets the highest minimum value for the given field if varies. | |
virtual int32_t | getLeastMaximum (EDateFields field) const |
Gets the lowest maximum value for the given field if varies. | |
virtual int32_t | getLeastMaximum (UCalendarDateFields field) const |
Gets the lowest maximum value for the given field if varies. | |
int32_t | getActualMinimum (EDateFields field, UErrorCode &status) const |
Return the minimum value that this field could have, given the current date. | |
int32_t | get (UCalendarDateFields field, UErrorCode &status) const |
Gets the value for a given time field. | |
UBool | isSet (UCalendarDateFields field) const |
Determines if the given time field has a value set. | |
void | set (UCalendarDateFields field, int32_t value) |
Sets the given time field with the given value. | |
void | set (int32_t year, int32_t month, int32_t date) |
Sets the values for the fields YEAR, MONTH, and DATE. | |
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. | |
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. | |
void | clear () |
Clears the values of all the time fields, making them both unset and assigning them a value of zero. | |
void | clear (UCalendarDateFields field) |
Clears the value in the given time field, both making it unset and assigning it a value of zero. | |
virtual UCalendarWeekdayType | getDayOfWeekType (UCalendarDaysOfWeek dayOfWeek, UErrorCode &status) const |
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). | |
virtual int32_t | getWeekendTransition (UCalendarDaysOfWeek dayOfWeek, UErrorCode &status) const |
Returns the time during the day at which the weekend begins or ends in this calendar system. | |
virtual UBool | isWeekend (UDate date, UErrorCode &status) const |
Returns true if the given UDate is in the weekend in this calendar system. | |
virtual UBool | isWeekend () const |
Returns true if this Calendar's current date-time is in the weekend in this calendar system. | |
virtual bool | inTemporalLeapYear (UErrorCode &status) const |
Returns true if the date is in a leap year. | |
virtual const char * | getTemporalMonthCode (UErrorCode &status) const |
Gets The Temporal monthCode value corresponding to the month for the date. | |
virtual 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. | |
virtual UBool | haveDefaultCentury () const =0 |
virtual UDate | defaultCenturyStart () const =0 |
virtual int32_t | defaultCenturyStartYear () const =0 |
Locale | getLocale (ULocDataLocaleType type, UErrorCode &status) const |
Get the locale for this calendar object. | |
virtual int32_t | getRelatedYear (UErrorCode &status) const |
virtual void | setRelatedYear (int32_t year) |
const char * | getLocaleID (ULocDataLocaleType type, UErrorCode &status) const |
Get the locale for this calendar object. | |
Public Member Functions inherited from icu::UObject | |
virtual | ~UObject () |
Destructor. | |
Static Public Member Functions | |
static UClassID | getStaticClassID () |
Return the class ID for this class. | |
Static Public Member Functions inherited from icu::Calendar | |
static Calendar * | createInstance (UErrorCode &success) |
Creates a Calendar using the default timezone and locale. | |
static Calendar * | createInstance (TimeZone *zoneToAdopt, UErrorCode &success) |
Creates a Calendar using the given timezone and the default locale. | |
static Calendar * | createInstance (const TimeZone &zone, UErrorCode &success) |
Creates a Calendar using the given timezone and the default locale. | |
static Calendar * | createInstance (const Locale &aLocale, UErrorCode &success) |
Creates a Calendar using the default timezone and the given locale. | |
static Calendar * | createInstance (TimeZone *zoneToAdopt, const Locale &aLocale, UErrorCode &success) |
Creates a Calendar using the given timezone and given locale. | |
static Calendar * | createInstance (const TimeZone &zone, const Locale &aLocale, UErrorCode &success) |
Gets a Calendar using the given timezone and given locale. | |
static const Locale * | getAvailableLocales (int32_t &count) |
Returns a list of the locales for which Calendars are installed. | |
static 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. | |
static UDate | getNow () |
Returns the current UTC (GMT) time measured in milliseconds since 0:00:00 on 1/1/70 (derived from the system time). | |
static StringEnumeration * | getAvailableLocales () |
INTERNAL FOR 2.6 – Registration. | |
static URegistryKey | registerFactory (ICUServiceFactory *toAdopt, UErrorCode &status) |
Register a new Calendar factory. | |
static UBool | unregister (URegistryKey key, UErrorCode &status) |
Unregister a previously-registered CalendarFactory using the key returned from the register call. | |
static Calendar * | makeInstance (const Locale &locale, UErrorCode &status) |
Creates a new Calendar from a Locale for the cache. | |
static void | getCalendarTypeFromLocale (const Locale &locale, char *typeBuffer, int32_t typeBufferSize, UErrorCode &status) |
Get the calendar type for given locale. | |
Protected Member Functions | |
virtual int32_t | internalGetEra () const |
Return the ERA. | |
virtual int64_t | handleComputeMonthStart (int32_t eyear, int32_t month, UBool useMonth, UErrorCode &status) const override |
Return the Julian day number of day before the first day of the given month in the given extended year. | |
virtual int32_t | handleComputeJulianDay (UCalendarDateFields bestField, UErrorCode &status) override |
Subclasses may override this. | |
virtual int32_t | handleGetMonthLength (int32_t extendedYear, int32_t month, UErrorCode &status) const override |
Return the number of days in the given month of the given extended year of this calendar system. | |
virtual int32_t | handleGetYearLength (int32_t eyear) const override |
Return the number of days in the given extended year of this calendar system. | |
virtual int32_t | monthLength (int32_t month, UErrorCode &status) const |
return the length of the given month. | |
virtual int32_t | monthLength (int32_t month, int32_t year) const |
return the length of the month according to the given year. | |
int32_t | yearLength () const |
return the length of the year field. | |
virtual UDate | getEpochDay (UErrorCode &status) |
Return the day number with respect to the epoch. | |
virtual int32_t | handleGetLimit (UCalendarDateFields field, ELimitType limitType) const override |
Subclass API for defining limits of different types. | |
virtual int32_t | handleGetExtendedYear (UErrorCode &status) override |
Return the extended year defined by the current fields. | |
virtual int32_t | handleGetExtendedYearFromWeekFields (int32_t yearWoy, int32_t woy, UErrorCode &status) override |
Subclasses may 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. | |
virtual void | handleComputeFields (int32_t julianDay, UErrorCode &status) override |
Subclasses may override this method to compute several fields specific to each calendar system. | |
virtual bool | isEra0CountingBackward () const override |
The year in this calendar is counting from 1 backward if the era is 0. | |
Protected Member Functions inherited from icu::Calendar | |
Calendar (UErrorCode &success) | |
Constructs a Calendar with the default time zone as returned by TimeZone::createInstance(), and the default locale. | |
Calendar (const Calendar &source) | |
Copy constructor. | |
Calendar & | operator= (const Calendar &right) |
Default assignment operator. | |
Calendar (TimeZone *zone, const Locale &aLocale, UErrorCode &success) | |
Constructs a Calendar with the given time zone and locale. | |
Calendar (const TimeZone &zone, const Locale &aLocale, UErrorCode &success) | |
Constructs a Calendar with the given time zone and locale. | |
virtual void | computeTime (UErrorCode &status) |
Converts Calendar's time field values to GMT as milliseconds. | |
virtual void | computeFields (UErrorCode &status) |
Converts GMT as milliseconds to time field values. | |
double | getTimeInMillis (UErrorCode &status) const |
Gets this Calendar's current time as a long. | |
void | setTimeInMillis (double millis, UErrorCode &status) |
Sets this Calendar's current time from the given long value. | |
void | complete (UErrorCode &status) |
Recomputes the current time from currently set fields, and then fills in any unset fields in the time field list. | |
int32_t | internalGet (EDateFields field) const |
Gets the value for a given time field. | |
int32_t | internalGet (UCalendarDateFields field, int32_t defaultValue) const |
Gets the value for a given time field. | |
int32_t | internalGet (UCalendarDateFields field) const |
Gets the value for a given time field. | |
virtual int32_t | internalGetMonth (UErrorCode &status) const |
Use this function instead of internalGet(UCAL_MONTH). | |
virtual int32_t | internalGetMonth (int32_t defaultValue, UErrorCode &status) const |
Use this function instead of internalGet(UCAL_MONTH, defaultValue). | |
void | internalSet (EDateFields field, int32_t value) |
Sets the value for a given time field. | |
void | internalSet (UCalendarDateFields field, int32_t value) |
Sets the value for a given time field. | |
virtual void | prepareGetActual (UCalendarDateFields field, UBool isMinimum, UErrorCode &status) |
Prepare this calendar for computing the actual minimum or maximum. | |
virtual int32_t | getLimit (UCalendarDateFields field, ELimitType limitType) const |
Return a limit for a field. | |
virtual void | validateField (UCalendarDateFields field, UErrorCode &status) |
Validate a single field of this calendar. | |
int32_t | computeJulianDay (UErrorCode &status) |
Compute the Julian day from fields. | |
double | computeMillisInDay () |
Compute the milliseconds in the day from the fields. | |
int32_t | computeZoneOffset (double millis, double millisInDay, UErrorCode &ec) |
This method can assume EXTENDED_YEAR has been set. | |
int32_t | newestStamp (UCalendarDateFields start, UCalendarDateFields end, int32_t bestSoFar) const |
Determine the best stamp in a range. | |
UCalendarDateFields | resolveFields (const UFieldResolutionTable *precedenceTable) const |
Given a precedence table, return the newest field combination in the table, or UCAL_FIELD_COUNT if none is found. | |
virtual const UFieldResolutionTable * | getFieldResolutionTable () const |
UCalendarDateFields | newerField (UCalendarDateFields defaultField, UCalendarDateFields alternateField) const |
Return the field that is newer, either defaultField, or alternateField. | |
UDate | internalGetTime () const |
Get the current time without recomputing. | |
void | internalSetTime (UDate time) |
Set the current time without affecting flags or fields. | |
int32_t | getGregorianYear () const |
Return the extended year on the Gregorian calendar as computed by computeGregorianFields() . | |
int32_t | getGregorianMonth () const |
Return the month (0-based) on the Gregorian calendar as computed by computeGregorianFields() . | |
int32_t | getGregorianDayOfYear () const |
Return the day of year (1-based) on the Gregorian calendar as computed by computeGregorianFields() . | |
int32_t | getGregorianDayOfMonth () const |
Return the day of month (1-based) on the Gregorian calendar as computed by computeGregorianFields() . | |
virtual int32_t | getDefaultMonthInYear (int32_t eyear, UErrorCode &status) |
Called by computeJulianDay. | |
virtual int32_t | getDefaultDayInMonth (int32_t eyear, int32_t month) |
Called by computeJulianDay. | |
virtual 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. | |
int32_t | weekNumber (int32_t desiredDay, int32_t dayOfPeriod, int32_t dayOfWeek) |
Return the week number of a day, within a period. | |
int32_t | weekNumber (int32_t dayOfPeriod, int32_t dayOfWeek) |
Return the week number of a day, within a period. | |
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. | |
Additional Inherited Members | |
Protected Types inherited from icu::Calendar | |
enum | ELimitType { UCAL_LIMIT_MINIMUM = 0 , UCAL_LIMIT_GREATEST_MINIMUM , UCAL_LIMIT_LEAST_MAXIMUM , UCAL_LIMIT_MAXIMUM , UCAL_LIMIT_COUNT } |
Limit enums. More... | |
enum | { kUnset = 0 , kInternallySet , kMinimumUserStamp } |
Special values of stamp[]. More... | |
Static Protected Member Functions inherited from icu::Calendar | |
static uint8_t | julianDayToDayOfWeek (int32_t julian) |
Convert a quasi Julian date to the day of the week. | |
Protected Attributes inherited from icu::Calendar | |
UBool | fIsTimeSet |
The flag which indicates if the current time is set in the calendar. | |
UBool | fAreFieldsSet |
True if the fields are in sync with the currently set time of this Calendar. | |
UBool | fAreAllFieldsSet |
True if all of the fields have been set. | |
UBool | fAreFieldsVirtuallySet |
True if all fields have been virtually set, but have not yet been computed. | |
int32_t | fFields [UCAL_FIELD_COUNT] |
The time fields containing values into which the millis is computed. | |
UBool | fIsSet [UCAL_FIELD_COUNT] |
The flags which tell if a specified time field for the calendar is set. | |
int32_t | fStamp [UCAL_FIELD_COUNT] |
Pseudo-time-stamps which specify when each field was set. | |
Static Protected Attributes inherited from icu::Calendar | |
static constexpr int32_t | kResolveSTOP = -1 |
Marker for end of resolve set (row or group). | |
static constexpr int32_t | kResolveRemap = 32 |
Value to be bitwised "ORed" against resolve table field values for remapping. | |
static const UFieldResolutionTable | kDatePrecedence [] |
Precedence table for Dates. | |
static const UFieldResolutionTable | kYearPrecedence [] |
Precedence table for Year. | |
static const UFieldResolutionTable | kDOWPrecedence [] |
Precedence table for Day of Week. | |
static const UFieldResolutionTable | kMonthPrecedence [] |
Precedence table for Months. | |
Concrete class which provides the standard calendar used by most of the world.
The standard (Gregorian) calendar has 2 eras, BC and AD.
This implementation handles a single discontinuity, which corresponds by default to the date the Gregorian calendar was originally instituted (October 15, 1582). Not all countries adopted the Gregorian calendar then, so this cutover date may be changed by the caller.
Prior to the institution of the Gregorian Calendar, New Year's Day was March 25. To avoid confusion, this Calendar always uses January 1. A manual adjustment may be made if desired for dates that are prior to the Gregorian changeover and which fall between January 1 and March 24.
Values calculated for the WEEK_OF_YEAR
field range from 1 to
getMinimalDaysInFirstWeek()
days from that year. It thus depends on the values of getMinimalDaysInFirstWeek()
, getFirstDayOfWeek()
, and the day of the week of January 1. Weeks between week 1 of one year and week 1 of the following year are numbered sequentially from 2 to 52 or 53 (as needed).For example, January 1, 1998 was a Thursday. If getFirstDayOfWeek()
is MONDAY
and getMinimalDaysInFirstWeek()
is 4 (these are the values reflecting ISO 8601 and many national standards), then week 1 of 1998 starts on December 29, 1997, and ends on January 4, 1998. If, however, getFirstDayOfWeek()
is SUNDAY
, then week 1 of 1998 starts on January 4, 1998, and ends on January 10, 1998; the first three days of 1998 then are part of week 53 of 1997.
Example for using GregorianCalendar:
// get the supported ids for GMT-08:00 (Pacific Standard Time)// if no ids were returned, something is wrong. get out.return;}// begin output// create a Pacific Standard Time time zone// set up rules for daylight savings time// create a GregorianCalendar with the Pacific Daylight time zone// and the current date and time// print out a bunch of interesting thingscout << "ZONE_OFFSET: " << (calendar->get( UCAL_ZONE_OFFSET, success )/(60*60*1000)) << endl; // in hourscout << "DST_OFFSET: " << (calendar->get( UCAL_DST_OFFSET, success )/(60*60*1000)) << endl; // in hours}delete ids;delete calendar; // also deletes pdtCalendar is an abstract base class for converting between a UDate object and a set of integer fields ...Definition calendar.h:189Concrete class which provides the standard calendar used by most of the world.Definition gregocal.h:153"Smart pointer" base class; do not use directly: use LocalPointer etc.Definition localpointer.h:68SimpleTimeZone is a concrete subclass of TimeZone that represents a time zone for use with a Gregoria...Definition simpletz.h:65Base class for 'pure' C++ implementations of uenum api.Definition strenum.h:61static StringEnumeration * createEnumeration()Returns an enumeration over all recognized time zone IDs.@ UCAL_ERAField number indicating the era, e.g., AD or BC in the Gregorian (Julian) calendar.Definition ucal.h:208@ UCAL_WEEK_OF_MONTHField number indicating the week number within the current month.Definition ucal.h:263@ UCAL_DAY_OF_YEARField number indicating the day number within the current year.Definition ucal.h:279@ UCAL_DAY_OF_WEEK_IN_MONTHField number indicating the ordinal number of the day of the week within the current month.Definition ucal.h:320@ UCAL_ZONE_OFFSETField number indicating the raw offset from GMT in milliseconds.Definition ucal.h:382@ UCAL_WEEK_OF_YEARField number indicating the week number within the current year.Definition ucal.h:248@ UCAL_DST_OFFSETField number indicating the daylight savings offset in milliseconds.Definition ucal.h:389
Definition at line 153 of file gregocal.h.
Useful constants for GregorianCalendar and TimeZone.
Definition at line 160 of file gregocal.h.
icu::GregorianCalendar::GregorianCalendar | ( | UErrorCode & | success | ) |
Constructs a default GregorianCalendar using the current time in the default time zone with the default locale.
success | Indicates the status of GregorianCalendar object construction. Returns U_ZERO_ERROR if constructed successfully. |
icu::GregorianCalendar::GregorianCalendar | ( | TimeZone * | zoneToAdopt, |
UErrorCode & | success | ||
) |
Constructs a GregorianCalendar based on the current time in the given time zone with the default locale.
Clients are no longer responsible for deleting the given time zone object after it's adopted.
zoneToAdopt | The given timezone. |
success | Indicates the status of GregorianCalendar object construction. Returns U_ZERO_ERROR if constructed successfully. |
icu::GregorianCalendar::GregorianCalendar | ( | const TimeZone & | zone, |
UErrorCode & | success | ||
) |
Constructs a GregorianCalendar based on the current time in the given time zone with the default locale.
zone | The given timezone. |
success | Indicates the status of GregorianCalendar object construction. Returns U_ZERO_ERROR if constructed successfully. |
icu::GregorianCalendar::GregorianCalendar | ( | const Locale & | aLocale, |
UErrorCode & | success | ||
) |
Constructs a GregorianCalendar based on the current time in the default time zone with the given locale.
aLocale | The given locale. |
success | Indicates the status of GregorianCalendar object construction. Returns U_ZERO_ERROR if constructed successfully. |
icu::GregorianCalendar::GregorianCalendar | ( | TimeZone * | zoneToAdopt, |
const Locale & | aLocale, | ||
UErrorCode & | success | ||
) |
Constructs a GregorianCalendar based on the current time in the given time zone with the given locale.
Clients are no longer responsible for deleting the given time zone object after it's adopted.
zoneToAdopt | The given timezone. |
aLocale | The given locale. |
success | Indicates the status of GregorianCalendar object construction. Returns U_ZERO_ERROR if constructed successfully. |
icu::GregorianCalendar::GregorianCalendar | ( | const TimeZone & | zone, |
const Locale & | aLocale, | ||
UErrorCode & | success | ||
) |
Constructs a GregorianCalendar based on the current time in the given time zone with the given locale.
zone | The given timezone. |
aLocale | The given locale. |
success | Indicates the status of GregorianCalendar object construction. Returns U_ZERO_ERROR if constructed successfully. |
icu::GregorianCalendar::GregorianCalendar | ( | int32_t | year, |
int32_t | month, | ||
int32_t | date, | ||
UErrorCode & | success | ||
) |
Constructs a GregorianCalendar with the given AD date set in the default time zone with the default locale.
year | The value used to set the YEAR time field in the calendar. |
month | The value used to set the MONTH time field in the calendar. Month value is 0-based. e.g., 0 for January. |
date | The value used to set the DATE time field in the calendar. |
success | Indicates the status of GregorianCalendar object construction. Returns U_ZERO_ERROR if constructed successfully. |
icu::GregorianCalendar::GregorianCalendar | ( | int32_t | year, |
int32_t | month, | ||
int32_t | date, | ||
int32_t | hour, | ||
int32_t | minute, | ||
UErrorCode & | success | ||
) |
Constructs a GregorianCalendar with the given AD date and time set for the default time zone with the default locale.
year | The value used to set the YEAR time field in the calendar. |
month | The value used to set the MONTH time field in the calendar. Month value is 0-based. e.g., 0 for January. |
date | The value used to set the DATE time field in the calendar. |
hour | The value used to set the HOUR_OF_DAY time field in the calendar. |
minute | The value used to set the MINUTE time field in the calendar. |
success | Indicates the status of GregorianCalendar object construction. Returns U_ZERO_ERROR if constructed successfully. |
icu::GregorianCalendar::GregorianCalendar | ( | int32_t | year, |
int32_t | month, | ||
int32_t | date, | ||
int32_t | hour, | ||
int32_t | minute, | ||
int32_t | second, | ||
UErrorCode & | success | ||
) |
Constructs a GregorianCalendar with the given AD date and time set for the default time zone with the default locale.
year | The value used to set the YEAR time field in the calendar. |
month | The value used to set the MONTH time field in the calendar. Month value is 0-based. e.g., 0 for January. |
date | The value used to set the DATE time field in the calendar. |
hour | The value used to set the HOUR_OF_DAY time field in the calendar. |
minute | The value used to set the MINUTE time field in the calendar. |
second | The value used to set the SECOND time field in the calendar. |
success | Indicates the status of GregorianCalendar object construction. Returns U_ZERO_ERROR if constructed successfully. |
icu::GregorianCalendar::GregorianCalendar | ( | const GregorianCalendar & | source | ) |
|
overridevirtual |
Create and return a polymorphic copy of this calendar.
Implements icu::Calendar.
|
overridevirtual |
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.
field | the time field. |
status | returns any errors that may result from this function call. |
Reimplemented from icu::Calendar.
int32_t icu::GregorianCalendar::getActualMinimum | ( | EDateFields | field | ) | const |
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().
field | the time field. |
int32_t icu::GregorianCalendar::getActualMinimum | ( | EDateFields | field, |
UErrorCode & | status | ||
) | const |
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().
field | the time field. |
status |
|
overridevirtual |
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().
field | the time field. |
status | error result. |
Reimplemented from icu::Calendar.
Override Calendar Returns a unique class ID POLYMORPHICALLY.
Pure virtual override. 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.
Implements icu::Calendar.
|
protectedvirtual |
Return the day number with respect to the epoch.
January 1, 1970 (Gregorian) is day zero.
status | Fill-in parameter which receives the status of this operation. |
UDate icu::GregorianCalendar::getGregorianChange | ( | ) | const |
Return the class ID for this class.
This is useful only for comparing to a return value from getDynamicClassID(). For example:
Base* polymorphic_pointer = createPolymorphicObject(); if (polymorphic_pointer->getDynamicClassID() == Derived::getStaticClassID()) ...
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".
For more details see the Calendar::getType() documentation.
Implements icu::Calendar.
|
overrideprotectedvirtual |
Subclasses may override this method to compute several fields specific to each calendar system.
These are:
The GregorianCalendar implementation implements a calendar with the specified Julian/Gregorian cutover date.
Reimplemented from icu::Calendar.
|
overrideprotectedvirtual |
Subclasses may override this.
This method calls handleGetMonthLength() to obtain the calendar-specific month length.
bestField | which field to use to calculate the date |
status | Fill-in parameter which receives the status of this operation. |
Reimplemented from icu::Calendar.
|
overrideprotectedvirtual |
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.
eyear | the extended year |
month | the zero-based month, or 0 if useMonth is false |
useMonth | if false, compute the day before the first day of the given year, otherwise, compute the day before the first day of the given month |
status | Fill-in parameter which receives the status of this operation. |
Implements icu::Calendar.
|
overrideprotectedvirtual |
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.
status |
Implements icu::Calendar.
|
overrideprotectedvirtual |
Subclasses may 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 Gregorian implementation assumes a yearWoy in gregorian format, according to the current era.
Reimplemented from icu::Calendar.
|
overrideprotectedvirtual |
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
field | one of the above field numbers |
limitType | one of MINIMUM , GREATEST_MINIMUM , LEAST_MAXIMUM , or MAXIMUM |
Implements icu::Calendar.
|
overrideprotectedvirtual |
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.
Reimplemented from icu::Calendar.
|
overrideprotectedvirtual |
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.
Reimplemented from icu::Calendar.
Return the ERA.
We need a special method for this because the default ERA is AD, but a zero (unset) ERA is BC.
|
inlineoverrideprotectedvirtual |
The year in this calendar is counting from 1 backward if the era is 0.
Reimplemented from icu::Calendar.
Definition at line 628 of file gregocal.h.
Return true if the given year is a leap year.
Determination of whether a year is a leap year is actually very complicated. We do something crude and mostly correct here, but for a real determination you need a lot of contextual information. For example, in Sweden, the change from Julian to Gregorian happened in a complex way resulting in missed leap years and double leap years between 1700 and 1753. Another example is that after the start of the Julian calendar in 45 B.C., the leap years did not regularize until 8 A.D. This method ignores these quirks, and pays attention only to the Julian onset date and the Gregorian cutover (which can be changed).
year | The given year. |
|
protectedvirtual |
return the length of the month according to the given year.
month | the given month. |
year | the given year. |
|
protectedvirtual |
return the length of the given month.
month | the given month. |
status | Fill-in parameter which receives the status of this operation. |
GregorianCalendar & icu::GregorianCalendar::operator= | ( | const GregorianCalendar & | right | ) |
|
overridevirtual |
(Overrides Calendar) Rolls up or down by the given amount in the specified field.
For more information, see the documentation for Calendar::roll().
field | The time field. |
amount | Indicates amount to roll. |
status | Output param set to success/failure code on exit. If any value previously set in the time field is invalid, this will be set to an error status. |
Reimplemented from icu::Calendar.
|
overridevirtual |
(Overrides Calendar) Rolls up or down by the given amount in the specified field.
For more information, see the documentation for Calendar::roll().
field | The time field. |
amount | Indicates amount to roll. |
status | Output param set to success/failure code on exit. If any value previously set in the time field is invalid, this will be set to an error status. |
Reimplemented from icu::Calendar.
void icu::GregorianCalendar::setGregorianChange | ( | UDate | date, |
UErrorCode & | success | ||
) |
Sets the GregorianCalendar change date.
This is the point when the switch from Julian dates to Gregorian dates occurred. Default is 00:00:00 local time, October 15, 1582. Previous to this time and date will be Julian dates.
date | The given Gregorian cutover date. |
success | Output param set to success/failure code on exit. |
|
protected |
return the length of the year field.