ICU 75.1 75.1
Loading...
Searching...
No Matches
calendar.h
Go to the documentation of this file.
1// © 2016 and later: Unicode, Inc. and others.
2// License & terms of use: http://www.unicode.org/copyright.html
3/*
4********************************************************************************
5* Copyright (C) 1997-2014, International Business Machines
6* Corporation and others. All Rights Reserved.
7********************************************************************************
8*
9* File CALENDAR.H
10*
11* Modification History:
12*
13* Date Name Description
14* 04/22/97 aliu Expanded and corrected comments and other header
15* contents.
16* 05/01/97 aliu Made equals(), before(), after() arguments const.
17* 05/20/97 aliu Replaced fAreFieldsSet with fAreFieldsInSync and
18* fAreAllFieldsSet.
19* 07/27/98 stephen Sync up with JDK 1.2
20* 11/15/99 weiv added YEAR_WOY and DOW_LOCAL
21* to EDateFields
22* 8/19/2002 srl Removed Javaisms
23* 11/07/2003 srl Update, clean up documentation.
24********************************************************************************
25*/
26
27#ifndef CALENDAR_H
28#define CALENDAR_H
29
30#include "unicode/utypes.h"
31
32#if U_SHOW_CPLUSPLUS_API
33
38#if !UCONFIG_NO_FORMATTING
39
40#include "unicode/uobject.h"
41#include "unicode/locid.h"
42#include "unicode/timezone.h"
43#include "unicode/ucal.h"
44#include "unicode/umisc.h"
45
46U_NAMESPACE_BEGIN
47
48class ICUServiceFactory;
49
50// Do not conditionalize the following with #ifndef U_HIDE_INTERNAL_API,
51// it is a return type for a virtual method (@internal)
56
57class BasicTimeZone;
190public:
191#ifndef U_FORCE_HIDE_DEPRECATED_API
199#ifndef U_HIDE_DEPRECATED_API
200/*
201 * ERA may be defined on other platforms. To avoid any potential problems undefined it here.
202 */
203#ifdef ERA
204#undef ERA
205#endif
206 ERA, // Example: 0..1
207 YEAR, // Example: 1..big number
208 MONTH, // Example: 0..11
209 WEEK_OF_YEAR, // Example: 1..53
210 WEEK_OF_MONTH, // Example: 1..4
211 DATE, // Example: 1..31
212 DAY_OF_YEAR, // Example: 1..365
213 DAY_OF_WEEK, // Example: 1..7
214 DAY_OF_WEEK_IN_MONTH, // Example: 1..4, may be specified as -1
215 AM_PM, // Example: 0..1
216 HOUR, // Example: 0..11
217 HOUR_OF_DAY, // Example: 0..23
218 MINUTE, // Example: 0..59
219 SECOND, // Example: 0..59
220 MILLISECOND, // Example: 0..999
221 ZONE_OFFSET, // Example: -12*U_MILLIS_PER_HOUR..12*U_MILLIS_PER_HOUR
222 DST_OFFSET, // Example: 0 or U_MILLIS_PER_HOUR
223 YEAR_WOY, // 'Y' Example: 1..big number - Year of Week of Year
224 DOW_LOCAL, // 'e' Example: 1..7 - Day of Week / Localized
225
226 EXTENDED_YEAR,
227 JULIAN_DAY,
228 MILLISECONDS_IN_DAY,
229 IS_LEAP_MONTH,
230
231 FIELD_COUNT = UCAL_FIELD_COUNT // See ucal.h for other fields.
232#endif /* U_HIDE_DEPRECATED_API */
233 };
234#endif // U_FORCE_HIDE_DEPRECATED_API
235
236#ifndef U_HIDE_DEPRECATED_API
244 SUNDAY = 1,
245 MONDAY,
246 TUESDAY,
247 WEDNESDAY,
248 THURSDAY,
249 FRIDAY,
250 SATURDAY
251 };
252
257 enum EMonths {
258 JANUARY,
259 FEBRUARY,
260 MARCH,
261 APRIL,
262 MAY,
263 JUNE,
264 JULY,
265 AUGUST,
266 SEPTEMBER,
267 OCTOBER,
268 NOVEMBER,
269 DECEMBER,
270 UNDECIMBER
271 };
272
277 enum EAmpm {
278 AM,
279 PM
280 };
281#endif /* U_HIDE_DEPRECATED_API */
282
287 virtual ~Calendar();
288
295 virtual Calendar* clone() const = 0;
296
309
322 static Calendar* U_EXPORT2 createInstance(TimeZone* zoneToAdopt, UErrorCode& success);
323
336
348
363
377
388
389
407 const Locale& locale, UBool commonlyUsed, UErrorCode& status);
408
417
431 inline UDate getTime(UErrorCode& status) const { return getTimeInMillis(status); }
432
443 inline void setTime(UDate date, UErrorCode& status) { setTimeInMillis(date, status); }
444
456 virtual bool operator==(const Calendar& that) const;
457
466 bool operator!=(const Calendar& that) const {return !operator==(that);}
467
478 virtual UBool isEquivalentTo(const Calendar& other) const;
479
495
510
525
526#ifndef U_FORCE_HIDE_DEPRECATED_API
548#endif // U_FORCE_HIDE_DEPRECATED_API
549
571
572#ifndef U_HIDE_DEPRECATED_API
605 inline void roll(EDateFields field, UBool up, UErrorCode& status);
606#endif /* U_HIDE_DEPRECATED_API */
607
640 inline void roll(UCalendarDateFields field, UBool up, UErrorCode& status);
641
642#ifndef U_FORCE_HIDE_DEPRECATED_API
675#endif // U_FORCE_HIDE_DEPRECATED_API
676
709
710#ifndef U_FORCE_HIDE_DEPRECATED_API
767#endif // U_FORCE_HIDE_DEPRECATED_API
768
825
835
844
853 const TimeZone& getTimeZone() const;
854
864
874
887 void setLenient(UBool lenient);
888
896
918
929
952
964
972
973#ifndef U_HIDE_DEPRECATED_API
981#endif /* U_HIDE_DEPRECATED_API */
982
991
1002
1013
1014#ifndef U_FORCE_HIDE_DEPRECATED_API
1023 virtual int32_t getMinimum(EDateFields field) const;
1024#endif // U_FORCE_HIDE_DEPRECATED_API
1025
1035
1036#ifndef U_FORCE_HIDE_DEPRECATED_API
1045 virtual int32_t getMaximum(EDateFields field) const;
1046#endif // U_FORCE_HIDE_DEPRECATED_API
1047
1057
1058#ifndef U_FORCE_HIDE_DEPRECATED_API
1068#endif // U_FORCE_HIDE_DEPRECATED_API
1069
1079
1080#ifndef U_FORCE_HIDE_DEPRECATED_API
1090#endif // U_FORCE_HIDE_DEPRECATED_API
1091
1101
1102#ifndef U_HIDE_DEPRECATED_API
1118#endif /* U_HIDE_DEPRECATED_API */
1119
1135
1153
1168
1178
1186 void set(UCalendarDateFields field, int32_t value);
1187
1199
1213
1228
1235 void clear();
1236
1247
1263 virtual UClassID getDynamicClassID() const override = 0;
1264
1297 virtual const char * getType() const = 0;
1298
1316
1332
1343
1351 virtual UBool isWeekend() const;
1352
1368
1387 virtual const char* getTemporalMonthCode(UErrorCode& status) const;
1388
1409
1410protected:
1411
1421
1428 Calendar(const Calendar& source);
1429
1437
1449
1460
1470
1483
1494
1504
1515
1516#ifndef U_HIDE_DEPRECATED_API
1525 inline int32_t internalGet(EDateFields field) const {return fFields[field];}
1526#endif /* U_HIDE_DEPRECATED_API */
1527
1528#ifndef U_HIDE_INTERNAL_API
1539 inline int32_t internalGet(UCalendarDateFields field, int32_t defaultValue) const {return fStamp[field]>kUnset ? fFields[field] : defaultValue;}
1540
1549 inline int32_t internalGet(UCalendarDateFields field) const {return fFields[field];}
1550
1556 virtual bool isEra0CountingBackward() const { return false; }
1557#endif /* U_HIDE_INTERNAL_API */
1558
1569
1584
1585#ifndef U_HIDE_DEPRECATED_API
1595 void internalSet(EDateFields field, int32_t value);
1596#endif /* U_HIDE_DEPRECATED_API */
1597
1607 inline void internalSet(UCalendarDateFields field, int32_t value);
1608
1616
1622#ifndef U_HIDE_INTERNAL_API
1623 UCAL_LIMIT_MINIMUM = 0,
1624 UCAL_LIMIT_GREATEST_MINIMUM,
1625 UCAL_LIMIT_LEAST_MAXIMUM,
1626 UCAL_LIMIT_MAXIMUM,
1627 UCAL_LIMIT_COUNT
1628#endif /* U_HIDE_INTERNAL_API */
1629 };
1630
1653
1662
1679 UBool useMonth, UErrorCode& status) const = 0;
1680
1689
1698
1699
1710
1721
1731
1739
1740#ifndef U_HIDE_INTERNAL_API
1749
1758
1769
1770
1780
1787 static constexpr int32_t kResolveSTOP = -1;
1797 static constexpr int32_t kResolveRemap = 32;
1798
1804 static const UFieldResolutionTable kDatePrecedence[];
1805
1811 static const UFieldResolutionTable kYearPrecedence[];
1812
1818 static const UFieldResolutionTable kDOWPrecedence[];
1819
1825 static const UFieldResolutionTable kMonthPrecedence[];
1826
1854 UCalendarDateFields resolveFields(const UFieldResolutionTable *precedenceTable) const;
1855#endif /* U_HIDE_INTERNAL_API */
1856
1857
1862
1863#ifndef U_HIDE_INTERNAL_API
1870#endif /* U_HIDE_INTERNAL_API */
1871
1872
1873private:
1883
1884
1885protected:
1891
1903
1910
1919
1926 UDate internalGetTime() const { return fTime; }
1927
1935 void internalSetTime(UDate time) { fTime = time; }
1936
1942
1943#ifndef U_FORCE_HIDE_DEPRECATED_API
1949#endif // U_FORCE_HIDE_DEPRECATED_API
1950
1954 enum {
1955 kUnset = 0,
1956 kInternallySet,
1957 kMinimumUserStamp
1958 };
1959
1967
1993
1994#ifndef U_HIDE_INTERNAL_API
2001 return fGregorianYear;
2002 }
2003
2010 return fGregorianMonth;
2011 }
2012
2019 return fGregorianDayOfYear;
2020 }
2021
2028 return fGregorianDayOfMonth;
2029 }
2030#endif /* U_HIDE_INTERNAL_API */
2031
2041
2042
2051
2052 //-------------------------------------------------------------------------
2053 // Protected utility methods for use by subclasses. These are very handy
2054 // for implementing add, roll, and computeFields.
2055 //-------------------------------------------------------------------------
2056
2087
2132
2133
2134#ifndef U_HIDE_INTERNAL_API
2165 inline int32_t weekNumber(int32_t dayOfPeriod, int32_t dayOfWeek);
2166
2172#endif /* U_HIDE_INTERNAL_API */
2173
2174private:
2175
2179 int32_t fNextStamp;// = MINIMUM_USER_STAMP;
2180
2185 void recalculateStamp();
2186
2190 UDate fTime;
2191
2195 UBool fLenient;
2196
2201 TimeZone* fZone;
2202
2207 UCalendarWallTimeOption fRepeatedWallTime;
2208
2213 UCalendarWallTimeOption fSkippedWallTime;
2214
2223 UCalendarDaysOfWeek fFirstDayOfWeek;
2224 uint8_t fMinimalDaysInFirstWeek;
2225 UCalendarDaysOfWeek fWeekendOnset;
2226 int32_t fWeekendOnsetMillis;
2227 UCalendarDaysOfWeek fWeekendCease;
2228 int32_t fWeekendCeaseMillis;
2229
2240 void setWeekData(const Locale& desiredLocale, const char *type, UErrorCode& success);
2241
2251 void updateTime(UErrorCode& status);
2252
2258 int32_t fGregorianYear;
2259
2265 int32_t fGregorianMonth;
2266
2272 int32_t fGregorianDayOfYear;
2273
2279 int32_t fGregorianDayOfMonth;
2280
2281 /* calculations */
2282
2289 void computeGregorianAndDOWFields(int32_t julianDay, UErrorCode &ec);
2290
2291protected:
2292
2301
2302private:
2303
2324 void computeWeekFields(UErrorCode &ec);
2325
2326
2334 void validateFields(UErrorCode &status);
2335
2343 void validateField(UCalendarDateFields field, int32_t min, int32_t max, UErrorCode& status);
2344
2345 protected:
2346#ifndef U_HIDE_INTERNAL_API
2357#endif /* U_HIDE_INTERNAL_API */
2358
2359 private:
2360 char validLocale[ULOC_FULLNAME_CAPACITY];
2361 char actualLocale[ULOC_FULLNAME_CAPACITY];
2362
2363 public:
2364#if !UCONFIG_NO_SERVICE
2369#ifndef U_HIDE_INTERNAL_API
2377
2392
2409#endif /* U_HIDE_INTERNAL_API */
2410
2415 friend class CalendarFactory;
2416
2421 friend class CalendarService;
2422
2427 friend class DefaultCalendarFactory;
2428#endif /* !UCONFIG_NO_SERVICE */
2429
2434 virtual UBool haveDefaultCentury() const = 0;
2435
2440 virtual UDate defaultCenturyStart() const = 0;
2446
2454
2461
2468
2469#ifndef U_HIDE_INTERNAL_API
2477#endif /* U_HIDE_INTERNAL_API */
2478
2479private:
2484 BasicTimeZone* getBasicTimeZone() const;
2485
2493 UBool getImmediatePreviousZoneTransition(UDate base, UDate *transitionTime, UErrorCode& status) const;
2494
2495public:
2496#ifndef U_HIDE_INTERNAL_API
2506 const Locale &locale, UErrorCode &status);
2507
2519 const Locale &locale,
2520 char *typeBuffer,
2523#endif /* U_HIDE_INTERNAL_API */
2524};
2525
2526// -------------------------------------
2527
2528inline Calendar*
2529Calendar::createInstance(TimeZone* zone, UErrorCode& errorCode)
2530{
2531 // since the Locale isn't specified, use the default locale
2532 return createInstance(zone, Locale::getDefault(), errorCode);
2533}
2534
2535// -------------------------------------
2536
2537inline void
2539{
2540 roll(field, (int32_t)(up ? +1 : -1), status);
2541}
2542
2543#ifndef U_HIDE_DEPRECATED_API
2544inline void
2545Calendar::roll(EDateFields field, UBool up, UErrorCode& status)
2546{
2547 roll((UCalendarDateFields) field, up, status);
2548}
2549#endif /* U_HIDE_DEPRECATED_API */
2550
2551
2552// -------------------------------------
2553
2559inline void
2560Calendar::internalSet(UCalendarDateFields field, int32_t value)
2561{
2562 fFields[field] = value;
2563 fStamp[field] = kInternallySet;
2564 fIsSet[field] = true; // Remove later
2565}
2566
2573#define DECLARE_OVERRIDE_SYSTEM_DEFAULT_CENTURY \
2574 virtual UBool haveDefaultCentury() const override; \
2575 virtual UDate defaultCenturyStart() const override; \
2576 virtual int32_t defaultCenturyStartYear() const override;
2577
2578#ifndef U_HIDE_INTERNAL_API
2579inline int32_t Calendar::weekNumber(int32_t dayOfPeriod, int32_t dayOfWeek)
2580{
2581 return weekNumber(dayOfPeriod, dayOfPeriod, dayOfWeek);
2582}
2583#endif /* U_HIDE_INTERNAL_API */
2584
2586
2587#endif /* #if !UCONFIG_NO_FORMATTING */
2588
2589#endif /* U_SHOW_CPLUSPLUS_API */
2590
2591#endif // _CALENDAR
BasicTimeZone is an abstract class extending TimeZone.
Definition basictz.h:38
Calendar is an abstract base class for converting between a UDate object and a set of integer fields ...
Definition calendar.h:189
UBool after(const Calendar &when, UErrorCode &status) const
Returns true if this Calendar's current time is after "when"'s current time.
virtual int32_t getGreatestMinimum(EDateFields field) const
Gets the highest minimum value for the given field if varies.
UBool fIsTimeSet
The flag which indicates if the current time is set in the calendar.
Definition calendar.h:1890
void setTime(UDate date, UErrorCode &status)
Sets this Calendar's current time with the given UDate.
Definition calendar.h:443
void setSkippedWallTimeOption(UCalendarWallTimeOption option)
Sets the behavior for handling skipped wall time at positive time zone offset transitions.
int32_t internalGet(UCalendarDateFields field) const
Gets the value for a given time field.
Definition calendar.h:1549
int32_t newestStamp(UCalendarDateFields start, UCalendarDateFields end, int32_t bestSoFar) const
Determine the best stamp in a range.
void set(UCalendarDateFields field, int32_t value)
Sets the given time field with the given value.
Locale getLocale(ULocDataLocaleType type, UErrorCode &status) const
Get the locale for this calendar object.
virtual const char * getTemporalMonthCode(UErrorCode &status) const
Gets The Temporal monthCode value corresponding to the month for the date.
int32_t get(UCalendarDateFields field, UErrorCode &status) const
Gets the value for a given time field.
int32_t getLocalDOW(UErrorCode &status)
returns the local DOW, valid range 0..6
virtual int32_t getMinimum(EDateFields field) const
Gets the minimum value for the given time field.
UDate internalGetTime() const
Get the current time without recomputing.
Definition calendar.h:1926
virtual void roll(UCalendarDateFields field, int32_t amount, UErrorCode &status)
Time Field Rolling function.
UCalendarWallTimeOption getRepeatedWallTimeOption() const
Gets the behavior for handling wall time repeating multiple times at negative time zone offset transi...
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.
int32_t weekNumber(int32_t desiredDay, int32_t dayOfPeriod, int32_t dayOfWeek)
Return the week number of a day, within a period.
virtual UClassID getDynamicClassID() const override=0
Returns a unique class ID POLYMORPHICALLY.
int32_t computeJulianDay(UErrorCode &status)
Compute the Julian day from fields.
virtual int32_t getLeastMaximum(UCalendarDateFields field) const
Gets the lowest maximum value for the given field if varies.
static Calendar * createInstance(UErrorCode &success)
Creates a Calendar using the default timezone and locale.
void setTimeInMillis(double millis, UErrorCode &status)
Sets this Calendar's current time from the given long value.
static Calendar * createInstance(const TimeZone &zone, const Locale &aLocale, UErrorCode &success)
Gets a Calendar using the given timezone and given locale.
void complete(UErrorCode &status)
Recomputes the current time from currently set fields, and then fills in any unset fields in the time...
static void getCalendarTypeFromLocale(const Locale &locale, char *typeBuffer, int32_t typeBufferSize, UErrorCode &status)
Get the calendar type for given locale.
static uint8_t julianDayToDayOfWeek(int32_t julian)
Convert a quasi Julian date to the day of the week.
UBool isSet(UCalendarDateFields field) const
Determines if the given time field has a value set.
void setLenient(UBool lenient)
Specifies whether or not date/time interpretation is to be lenient.
virtual 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 ...
int32_t getGregorianMonth() const
Return the month (0-based) on the Gregorian calendar as computed by computeGregorianFields().
Definition calendar.h:2009
void clear()
Clears the values of all the time fields, making them both unset and assigning them a value of zero.
void computeGregorianFields(int32_t julianDay, UErrorCode &ec)
Compute the Gregorian calendar year, month, and day of month from the Julian day.
int32_t getGregorianDayOfYear() const
Return the day of year (1-based) on the Gregorian calendar as computed by computeGregorianFields().
Definition calendar.h:2018
virtual UBool haveDefaultCentury() const =0
EDaysOfWeek
Useful constant for days of week.
Definition calendar.h:243
virtual int32_t getLeastMaximum(EDateFields field) const
Gets the lowest maximum value for the given field if varies.
virtual ~Calendar()
destructor
UBool isLenient() const
Tells whether date/time interpretation is to be lenient.
EDateFields
Field IDs for date and time.
Definition calendar.h:198
EDaysOfWeek getFirstDayOfWeek() const
Gets what the first day of the week is; e.g., Sunday in US, Monday in France.
virtual int64_t handleComputeMonthStart(int32_t eyear, int32_t month, UBool useMonth, UErrorCode &status) const =0
Return the Julian day number of day before the first day of the given month in the given extended yea...
virtual bool operator==(const Calendar &that) const
Compares the equality of two Calendar objects.
virtual void roll(EDateFields field, int32_t amount, UErrorCode &status)
Time Field Rolling function.
static Calendar * createInstance(const Locale &aLocale, UErrorCode &success)
Creates a Calendar using the default timezone and the given locale.
static Calendar * makeInstance(const Locale &locale, UErrorCode &status)
Creates a new Calendar from a Locale for the cache.
ELimitType
Limit enums.
Definition calendar.h:1621
Calendar(UErrorCode &success)
Constructs a Calendar with the default time zone as returned by TimeZone::createInstance(),...
UBool equals(const Calendar &when, UErrorCode &status) const
Compares the Calendar time, whereas Calendar::operator== compares the equality of Calendar objects.
bool operator!=(const Calendar &that) const
Compares the inequality of two Calendar objects.
Definition calendar.h:466
virtual int32_t getRelatedYear(UErrorCode &status) const
virtual Calendar * clone() const =0
Create and return a polymorphic copy of this calendar.
void clear(UCalendarDateFields field)
Clears the value in the given time field, both making it unset and assigning it a value of zero.
virtual void handleComputeFields(int32_t julianDay, UErrorCode &status)
Subclasses may override this method to compute several fields specific to each calendar system.
virtual void setTemporalMonthCode(const char *temporalMonth, UErrorCode &status)
Sets The Temporal monthCode which is a string identifier that starts with the literal grapheme "M" fo...
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 di...
UBool fAreFieldsVirtuallySet
True if all fields have been virtually set, but have not yet been computed.
Definition calendar.h:1918
double getTimeInMillis(UErrorCode &status) const
Gets this Calendar's current time as a long.
UCalendarDaysOfWeek getFirstDayOfWeek(UErrorCode &status) const
Gets what the first day of the week is; e.g., Sunday in US, Monday in France.
Calendar & operator=(const Calendar &right)
Default assignment operator.
static Calendar * createInstance(TimeZone *zoneToAdopt, const Locale &aLocale, UErrorCode &success)
Creates a Calendar using the given timezone and given locale.
TimeZone * orphanTimeZone()
Returns the time zone owned by this calendar.
int32_t internalGet(EDateFields field) const
Gets the value for a given time field.
Definition calendar.h:1525
static URegistryKey registerFactory(ICUServiceFactory *toAdopt, UErrorCode &status)
Register a new Calendar factory.
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 const char * getType() const =0
Returns the calendar type name string for this Calendar object.
UBool fAreFieldsSet
True if the fields are in sync with the currently set time of this Calendar.
Definition calendar.h:1902
Calendar(const Calendar &source)
Copy constructor.
virtual void computeFields(UErrorCode &status)
Converts GMT as milliseconds to time field values.
static UDate getNow()
Returns the current UTC (GMT) time measured in milliseconds since 0:00:00 on 1/1/70 (derived from the...
virtual int32_t getActualMaximum(UCalendarDateFields field, UErrorCode &status) const
Return the maximum value that this field could have, given the current date.
static const Locale * getAvailableLocales(int32_t &count)
Returns a list of the locales for which Calendars are installed.
virtual void prepareGetActual(UCalendarDateFields field, UBool isMinimum, UErrorCode &status)
Prepare this calendar for computing the actual minimum or maximum.
void adoptTimeZone(TimeZone *value)
Sets the calendar's time zone to be the one passed in.
UBool before(const Calendar &when, UErrorCode &status) const
Returns true if this Calendar's current time is before "when"'s current time.
virtual int32_t defaultCenturyStartYear() const =0
void setMinimalDaysInFirstWeek(uint8_t value)
Sets what the minimal days required in the first week of the year are; For example,...
virtual UBool inDaylightTime(UErrorCode &status) const
Queries if the current date for this Calendar is in Daylight Savings Time.
const char * getLocaleID(ULocDataLocaleType type, UErrorCode &status) const
Get the locale for this calendar object.
virtual UDate defaultCenturyStart() const =0
virtual int32_t getMaximum(UCalendarDateFields field) const
Gets the maximum value for the given time field.
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 calend...
int32_t getGregorianYear() const
Return the extended year on the Gregorian calendar as computed by computeGregorianFields().
Definition calendar.h:2000
int32_t internalGet(UCalendarDateFields field, int32_t defaultValue) const
Gets the value for a given time field.
Definition calendar.h:1539
void internalSetTime(UDate time)
Set the current time without affecting flags or fields.
Definition calendar.h:1935
virtual int32_t getActualMinimum(UCalendarDateFields field, UErrorCode &status) const
Return the minimum value that this field could have, given the current date.
UDate getTime(UErrorCode &status) const
Gets this Calendar's time as milliseconds.
Definition calendar.h:431
UBool fAreAllFieldsSet
True if all of the fields have been set.
Definition calendar.h:1909
virtual int32_t handleGetLimit(UCalendarDateFields field, ELimitType limitType) const =0
Subclass API for defining limits of different types.
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.
int32_t getActualMinimum(EDateFields field, UErrorCode &status) const
Return the minimum value that this field could have, given the current date.
virtual int32_t internalGetMonth(UErrorCode &status) const
Use this function instead of internalGet(UCAL_MONTH).
UCalendarDateFields newerField(UCalendarDateFields defaultField, UCalendarDateFields alternateField) const
Return the field that is newer, either defaultField, or alternateField.
virtual UBool isEquivalentTo(const Calendar &other) const
Returns true if the given Calendar object is equivalent to this one.
const TimeZone & getTimeZone() const
Returns a reference to the time zone owned by this calendar.
double computeMillisInDay()
Compute the milliseconds in the day from the fields.
virtual bool isEra0CountingBackward() const
The year in this calendar is counting from 1 backward if the era is 0.
Definition calendar.h:1556
virtual int32_t getGreatestMinimum(UCalendarDateFields field) const
Gets the highest minimum value for the given field if varies.
Calendar(const TimeZone &zone, const Locale &aLocale, UErrorCode &success)
Constructs a Calendar with the given time zone and locale.
static Calendar * createInstance(const TimeZone &zone, UErrorCode &success)
Creates a Calendar using the given timezone and the default locale.
void setTimeZone(const TimeZone &zone)
Sets the calendar's time zone to be the same as the one passed in.
EAmpm
Useful constants for hour in 12-hour clock.
Definition calendar.h:277
void internalSet(EDateFields field, int32_t value)
Sets the value for a given time field.
virtual void setRelatedYear(int32_t year)
virtual int32_t getMinimum(UCalendarDateFields field) const
Gets the minimum value for the given time field.
UCalendarDateFields resolveFields(const UFieldResolutionTable *precedenceTable) const
Given a precedence table, return the newest field combination in the table, or UCAL_FIELD_COUNT if no...
virtual int32_t handleComputeJulianDay(UCalendarDateFields bestField, UErrorCode &status)
Subclasses may override this.
void setRepeatedWallTimeOption(UCalendarWallTimeOption option)
Sets the behavior for handling wall time repeating multiple times at negative time zone offset transi...
virtual int32_t internalGetMonth(int32_t defaultValue, UErrorCode &status) const
Use this function instead of internalGet(UCAL_MONTH, defaultValue).
void setFirstDayOfWeek(UCalendarDaysOfWeek value)
Sets what the first day of the week is; e.g., Sunday in US, Monday in France.
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.
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.
virtual int32_t handleGetMonthLength(int32_t extendedYear, int32_t month, UErrorCode &status) const
Return the number of days in the given month of the given extended year of this calendar system.
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...
virtual int32_t handleGetYearLength(int32_t eyear) const
Return the number of days in the given extended year of this calendar system.
EMonths
Useful constants for month.
Definition calendar.h:257
virtual void computeTime(UErrorCode &status)
Converts Calendar's time field values to GMT as milliseconds.
static StringEnumeration * getAvailableLocales()
INTERNAL FOR 2.6 – Registration.
virtual int32_t getLimit(UCalendarDateFields field, ELimitType limitType) const
Return a limit for a field.
virtual UBool isWeekend(UDate date, UErrorCode &status) const
Returns true if the given UDate is in the weekend in this calendar system.
virtual int32_t getMaximum(EDateFields field) const
Gets the maximum value for the given time field.
virtual int32_t handleGetExtendedYear(UErrorCode &status)=0
Return the extended year defined by the current fields.
UCalendarWallTimeOption getSkippedWallTimeOption() const
Gets the behavior for handling skipped wall time at positive time zone offset transitions.
virtual void add(UCalendarDateFields field, int32_t amount, UErrorCode &status)
UDate Arithmetic function.
static UBool unregister(URegistryKey key, UErrorCode &status)
Unregister a previously-registered CalendarFactory using the key returned from the register call.
virtual void validateField(UCalendarDateFields field, UErrorCode &status)
Validate a single field of this calendar.
virtual const UFieldResolutionTable * getFieldResolutionTable() const
virtual void add(EDateFields field, int32_t amount, UErrorCode &status)
UDate Arithmetic function.
int32_t getGregorianDayOfMonth() const
Return the day of month (1-based) on the Gregorian calendar as computed by computeGregorianFields().
Definition calendar.h:2027
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 def...
Calendar(TimeZone *zone, const Locale &aLocale, UErrorCode &success)
Constructs a Calendar with the given time zone and locale.
int32_t computeZoneOffset(double millis, double millisInDay, UErrorCode &ec)
This method can assume EXTENDED_YEAR has been set.
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.
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.
"Smart pointer" base class; do not use directly: use LocalPointer etc.
A Locale object represents a specific geographical, political, or cultural region.
Definition locid.h:195
Base class for 'pure' C++ implementations of uenum api.
Definition strenum.h:61
TimeZone represents a time zone offset, and also figures out daylight savings.
Definition timezone.h:133
UObject is the common ICU "boilerplate" class.
Definition uobject.h:223
C++ API: Locale ID object.
U_EXPORT UBool operator==(const StringPiece &x, const StringPiece &y)
Global operator == for StringPiece.
int32_t UFieldResolutionTable[12][8]
Definition calendar.h:55
C++ API: TimeZone object.
C API: Calendar.
UCalendarDateFields
Possible fields in a UCalendar.
Definition ucal.h:202
@ UCAL_FIELD_COUNT
One more than the highest normal UCalendarDateFields value.
Definition ucal.h:477
UCalendarWallTimeOption
Options for handling ambiguous wall time at time zone offset transitions.
Definition ucal.h:991
UCalendarWeekdayType
Weekday types, as returned by ucal_getDayOfWeekType().
Definition ucal.h:1457
UCalendarDaysOfWeek
Useful constant for days of week.
Definition ucal.h:502
#define ULOC_FULLNAME_CAPACITY
Useful constant for the maximum size of the whole locale ID (including the terminating NULL and all k...
Definition uloc.h:264
ULocDataLocaleType
Constants for *_getLocale() Allow user to select whether she wants information on requested,...
Definition uloc.h:338
int8_t UBool
The ICU boolean type, a signed-byte integer.
Definition umachine.h:247
C API: Miscellaneous definitions.
const void * URegistryKey
Opaque type returned by registerInstance, registerFactory and unregister for service registration.
Definition umisc.h:57
C++ API: Common ICU base class UObject.
void * UClassID
UClassID is used to identify classes without using the compiler's RTTI.
Definition uobject.h:96
Basic definitions for ICU, for both C and C++ APIs.
UErrorCode
Standard ICU4C error code type, a substitute for exceptions.
Definition utypes.h:415
#define U_I18N_API
Set to export library symbols from inside the i18n library, and to import them from outside.
Definition utypes.h:301
double UDate
Date and Time data type.
Definition utypes.h:203