34 #if !UCONFIG_NO_FORMATTING
44 class ICUServiceFactory;
176 #ifndef U_HIDE_DEPRECATED_API
191 DAY_OF_WEEK_IN_MONTH,
212 #ifndef U_HIDE_DEPRECATED_API
271 virtual Calendar* clone(
void)
const = 0;
363 static const Locale* U_EXPORT2 getAvailableLocales(int32_t& count);
392 static UDate U_EXPORT2 getNow(
void);
519 virtual void add(EDateFields field, int32_t amount,
UErrorCode& status);
540 #ifndef U_HIDE_DEPRECATED_API
614 virtual void roll(EDateFields field, int32_t amount,
UErrorCode& status);
695 virtual int32_t fieldDifference(
UDate when, EDateFields field,
UErrorCode& status);
762 void adoptTimeZone(
TimeZone* value);
771 void setTimeZone(
const TimeZone& zone);
781 const TimeZone& getTimeZone(
void)
const;
815 void setLenient(
UBool lenient);
823 UBool isLenient(
void)
const;
825 #ifndef U_HIDE_DRAFT_API
895 #ifndef U_HIDE_DEPRECATED_API
902 void setFirstDayOfWeek(EDaysOfWeek value);
913 #ifndef U_HIDE_DEPRECATED_API
920 EDaysOfWeek getFirstDayOfWeek(
void)
const;
941 void setMinimalDaysInFirstWeek(uint8_t value);
952 uint8_t getMinimalDaysInFirstWeek(
void)
const;
962 virtual int32_t getMinimum(EDateFields field)
const;
982 virtual int32_t getMaximum(EDateFields field)
const;
1002 virtual int32_t getGreatestMinimum(EDateFields field)
const;
1022 virtual int32_t getLeastMaximum(EDateFields field)
const;
1034 #ifndef U_HIDE_DEPRECATED_API
1049 int32_t getActualMinimum(EDateFields field,
UErrorCode& status)
const;
1068 #ifndef U_HIDE_DEPRECATED_API
1085 int32_t getActualMaximum(EDateFields field,
UErrorCode& status)
const;
1106 #ifndef U_HIDE_DEPRECATED_API
1120 int32_t
get(EDateFields field,
UErrorCode& status)
const;
1138 #ifndef U_HIDE_DEPRECATED_API
1147 UBool isSet(EDateFields field)
const;
1160 #ifndef U_HIDE_DEPRECATED_API
1168 void set(EDateFields field, int32_t value);
1190 void set(int32_t year, int32_t month, int32_t date);
1204 void set(int32_t year, int32_t month, int32_t date, int32_t hour, int32_t minute);
1219 void set(int32_t year, int32_t month, int32_t date, int32_t hour, int32_t minute, int32_t second);
1229 #ifndef U_HIDE_DEPRECATED_API
1238 void clear(EDateFields field);
1300 virtual const char * getType()
const = 0;
1353 virtual UBool isWeekend(
void)
const;
1414 virtual void computeTime(
UErrorCode& status);
1427 virtual void computeFields(
UErrorCode& status);
1438 double getTimeInMillis(
UErrorCode& status)
const;
1448 void setTimeInMillis(
double millis,
UErrorCode& status );
1461 #ifndef U_HIDE_DEPRECATED_API
1473 #ifndef U_HIDE_INTERNAL_API
1497 #ifndef U_HIDE_DEPRECATED_API
1507 void internalSet(EDateFields field, int32_t value);
1534 UCAL_LIMIT_MINIMUM = 0,
1535 UCAL_LIMIT_GREATEST_MINIMUM,
1536 UCAL_LIMIT_LEAST_MAXIMUM,
1562 virtual int32_t handleGetLimit(
UCalendarDateFields field, ELimitType limitType)
const = 0;
1587 virtual int32_t handleComputeMonthStart(int32_t eyear, int32_t month,
1588 UBool useMonth)
const = 0;
1597 virtual int32_t handleGetMonthLength(int32_t extendedYear, int32_t month)
const ;
1606 virtual int32_t handleGetYearLength(int32_t eyear)
const;
1617 virtual int32_t handleGetExtendedYear() = 0;
1637 virtual int32_t handleGetExtendedYearFromWeekFields(int32_t yearWoy, int32_t woy);
1639 #ifndef U_HIDE_INTERNAL_API
1646 int32_t computeJulianDay();
1655 int32_t computeMillisInDay();
1666 int32_t computeZoneOffset(
double millis, int32_t millisInDay,
UErrorCode &ec);
1748 #ifndef U_HIDE_INTERNAL_API
1875 virtual void handleComputeFields(int32_t julianDay,
UErrorCode &status);
1877 #ifndef U_HIDE_INTERNAL_API
1884 return fGregorianYear;
1893 return fGregorianMonth;
1902 return fGregorianDayOfYear;
1911 return fGregorianDayOfMonth;
1921 virtual int32_t getDefaultMonthInYear(int32_t eyear) ;
1931 virtual int32_t getDefaultDayInMonth(int32_t eyear, int32_t month);
2012 int32_t weekNumber(int32_t desiredDay, int32_t dayOfPeriod, int32_t dayOfWeek);
2015 #ifndef U_HIDE_INTERNAL_API
2046 inline int32_t weekNumber(int32_t dayOfPeriod, int32_t dayOfWeek);
2052 int32_t getLocalDOW();
2066 void recalculateStamp();
2105 uint8_t fMinimalDaysInFirstWeek;
2107 int32_t fWeekendOnsetMillis;
2109 int32_t fWeekendCeaseMillis;
2121 void setWeekData(
const Locale& desiredLocale,
const char *type,
UErrorCode& success);
2139 int32_t fGregorianYear;
2146 int32_t fGregorianMonth;
2153 int32_t fGregorianDayOfYear;
2160 int32_t fGregorianDayOfMonth;
2170 void computeGregorianAndDOWFields(int32_t julianDay,
UErrorCode &ec);
2181 void computeGregorianFields(int32_t julianDay,
UErrorCode &ec);
2239 #ifndef U_HIDE_INTERNAL_API
2249 static uint8_t julianDayToDayOfWeek(
double julian);
2257 #if !UCONFIG_NO_SERVICE
2262 #ifndef U_HIDE_INTERNAL_API
2298 friend class CalendarFactory;
2304 friend class CalendarService;
2310 friend class DefaultCalendarFactory;
2317 virtual UBool haveDefaultCentury()
const = 0;
2323 virtual UDate defaultCenturyStart()
const = 0;
2328 virtual int32_t defaultCenturyStartYear()
const = 0;
2338 #ifndef U_HIDE_INTERNAL_API
2370 roll(field, (int32_t)(up ? +1 : -1), status);
2373 #ifndef U_HIDE_DEPRECATED_API
2393 fStamp[field] = kInternallySet;
2398 #ifndef U_HIDE_INTERNAL_API
2401 return weekNumber(dayOfPeriod, dayOfPeriod, dayOfWeek);