32 #if U_SHOW_CPLUSPLUS_API
38 #if !UCONFIG_NO_FORMATTING
48 class ICUServiceFactory;
191 #ifndef U_FORCE_HIDE_DEPRECATED_API
199 #ifndef U_HIDE_DEPRECATED_API
214 DAY_OF_WEEK_IN_MONTH,
234 #endif // U_FORCE_HIDE_DEPRECATED_API
236 #ifndef U_HIDE_DEPRECATED_API
295 virtual Calendar* clone()
const = 0;
387 static const Locale* U_EXPORT2 getAvailableLocales(int32_t& count);
416 static UDate U_EXPORT2 getNow(
void);
526 #ifndef U_FORCE_HIDE_DEPRECATED_API
547 virtual void add(EDateFields field, int32_t amount,
UErrorCode& status);
548 #endif // U_FORCE_HIDE_DEPRECATED_API
572 #ifndef U_HIDE_DEPRECATED_API
642 #ifndef U_FORCE_HIDE_DEPRECATED_API
674 virtual void roll(EDateFields field, int32_t amount,
UErrorCode& status);
675 #endif // U_FORCE_HIDE_DEPRECATED_API
710 #ifndef U_FORCE_HIDE_DEPRECATED_API
766 virtual int32_t fieldDifference(
UDate when, EDateFields field,
UErrorCode& status);
767 #endif // U_FORCE_HIDE_DEPRECATED_API
834 void adoptTimeZone(
TimeZone* value);
843 void setTimeZone(
const TimeZone& zone);
853 const TimeZone& getTimeZone(
void)
const;
887 void setLenient(
UBool lenient);
895 UBool isLenient(
void)
const;
973 #ifndef U_HIDE_DEPRECATED_API
980 EDaysOfWeek getFirstDayOfWeek(
void)
const;
1001 void setMinimalDaysInFirstWeek(uint8_t value);
1012 uint8_t getMinimalDaysInFirstWeek(
void)
const;
1014 #ifndef U_FORCE_HIDE_DEPRECATED_API
1023 virtual int32_t getMinimum(EDateFields field)
const;
1024 #endif // U_FORCE_HIDE_DEPRECATED_API
1036 #ifndef U_FORCE_HIDE_DEPRECATED_API
1045 virtual int32_t getMaximum(EDateFields field)
const;
1046 #endif // U_FORCE_HIDE_DEPRECATED_API
1058 #ifndef U_FORCE_HIDE_DEPRECATED_API
1067 virtual int32_t getGreatestMinimum(EDateFields field)
const;
1068 #endif // U_FORCE_HIDE_DEPRECATED_API
1080 #ifndef U_FORCE_HIDE_DEPRECATED_API
1089 virtual int32_t getLeastMaximum(EDateFields field)
const;
1090 #endif // U_FORCE_HIDE_DEPRECATED_API
1102 #ifndef U_HIDE_DEPRECATED_API
1117 int32_t getActualMinimum(EDateFields field,
UErrorCode& status)
const;
1198 void set(int32_t year, int32_t month, int32_t date);
1212 void set(int32_t year, int32_t month, int32_t date, int32_t hour, int32_t minute);
1227 void set(int32_t year, int32_t month, int32_t date, int32_t hour, int32_t minute, int32_t second);
1296 virtual const char * getType()
const = 0;
1350 virtual UBool isWeekend(
void)
const;
1352 #ifndef U_FORCE_HIDE_DRAFT_API
1367 virtual bool inTemporalLeapYear(
UErrorCode& status)
const;
1387 virtual const char* getTemporalMonthCode(
UErrorCode& status)
const;
1408 virtual void setTemporalMonthCode(
const char* temporalMonth,
UErrorCode& status);
1410 #endif // U_FORCE_HIDE_DRAFT_API
1471 virtual void computeTime(
UErrorCode& status);
1484 virtual void computeFields(
UErrorCode& status);
1495 double getTimeInMillis(
UErrorCode& status)
const;
1505 void setTimeInMillis(
double millis,
UErrorCode& status );
1518 #ifndef U_HIDE_DEPRECATED_API
1530 #ifndef U_HIDE_INTERNAL_API
1563 virtual int32_t internalGetMonth()
const;
1576 virtual int32_t internalGetMonth(int32_t defaultValue)
const;
1578 #ifndef U_HIDE_DEPRECATED_API
1588 void internalSet(EDateFields field, int32_t value);
1615 #ifndef U_HIDE_INTERNAL_API
1616 UCAL_LIMIT_MINIMUM = 0,
1617 UCAL_LIMIT_GREATEST_MINIMUM,
1618 UCAL_LIMIT_LEAST_MAXIMUM,
1645 virtual int32_t handleGetLimit(
UCalendarDateFields field, ELimitType limitType)
const = 0;
1669 virtual int32_t handleComputeMonthStart(int32_t eyear, int32_t month,
1670 UBool useMonth)
const = 0;
1679 virtual int32_t handleGetMonthLength(int32_t extendedYear, int32_t month)
const ;
1688 virtual int32_t handleGetYearLength(int32_t eyear)
const;
1699 virtual int32_t handleGetExtendedYear() = 0;
1719 virtual int32_t handleGetExtendedYearFromWeekFields(int32_t yearWoy, int32_t woy);
1729 #ifndef U_HIDE_INTERNAL_API
1736 int32_t computeJulianDay();
1745 double computeMillisInDay();
1756 int32_t computeZoneOffset(
double millis,
double millisInDay,
UErrorCode &ec);
1775 static constexpr int32_t kResolveSTOP = -1;
1785 static constexpr int32_t kResolveRemap = 32;
1851 #ifndef U_HIDE_INTERNAL_API
1931 #ifndef U_FORCE_HIDE_DEPRECATED_API
1937 #endif // U_FORCE_HIDE_DEPRECATED_API
1980 virtual void handleComputeFields(int32_t julianDay,
UErrorCode &status);
1982 #ifndef U_HIDE_INTERNAL_API
1989 return fGregorianYear;
1998 return fGregorianMonth;
2007 return fGregorianDayOfYear;
2016 return fGregorianDayOfMonth;
2026 virtual int32_t getDefaultMonthInYear(int32_t eyear) ;
2036 virtual int32_t getDefaultDayInMonth(int32_t eyear, int32_t month);
2117 int32_t weekNumber(int32_t desiredDay, int32_t dayOfPeriod, int32_t dayOfWeek);
2120 #ifndef U_HIDE_INTERNAL_API
2151 inline int32_t weekNumber(int32_t dayOfPeriod, int32_t dayOfWeek);
2157 int32_t getLocalDOW();
2171 void recalculateStamp();
2210 uint8_t fMinimalDaysInFirstWeek;
2212 int32_t fWeekendOnsetMillis;
2214 int32_t fWeekendCeaseMillis;
2226 void setWeekData(
const Locale& desiredLocale,
const char *type,
UErrorCode& success);
2244 int32_t fGregorianYear;
2251 int32_t fGregorianMonth;
2258 int32_t fGregorianDayOfYear;
2265 int32_t fGregorianDayOfMonth;
2275 void computeGregorianAndDOWFields(int32_t julianDay,
UErrorCode &ec);
2286 void computeGregorianFields(int32_t julianDay,
UErrorCode &ec);
2332 #ifndef U_HIDE_INTERNAL_API
2342 static uint8_t julianDayToDayOfWeek(
double julian);
2350 #if !UCONFIG_NO_SERVICE
2355 #ifndef U_HIDE_INTERNAL_API
2401 friend class CalendarFactory;
2407 friend class CalendarService;
2413 friend class DefaultCalendarFactory;
2420 virtual UBool haveDefaultCentury()
const = 0;
2426 virtual UDate defaultCenturyStart()
const = 0;
2431 virtual int32_t defaultCenturyStartYear()
const = 0;
2446 virtual int32_t getRelatedYear(
UErrorCode &status)
const;
2453 virtual void setRelatedYear(int32_t year);
2455 #ifndef U_HIDE_INTERNAL_API
2482 #ifndef U_HIDE_INTERNAL_API
2491 static Calendar * U_EXPORT2 makeInstance(
2504 static void U_EXPORT2 getCalendarTypeFromLocale(
2507 int32_t typeBufferSize,
2518 return createInstance(zone, Locale::getDefault(), errorCode);
2526 roll(field, (int32_t)(up ? +1 : -1), status);
2529 #ifndef U_HIDE_DEPRECATED_API
2548 fFields[field] = value;
2549 fStamp[field] = kInternallySet;
2550 fIsSet[field] =
true;
2554 #ifndef U_HIDE_INTERNAL_API
2555 inline int32_t Calendar::weekNumber(int32_t dayOfPeriod, int32_t dayOfWeek)
2557 return weekNumber(dayOfPeriod, dayOfPeriod, dayOfWeek);