36 #if !UCONFIG_NO_FORMATTING
46 class ICUServiceFactory;
212 #ifndef U_HIDE_DEPRECATED_API
227 DAY_OF_WEEK_IN_MONTH,
248 #ifndef U_HIDE_DEPRECATED_API
307 virtual Calendar* clone(
void)
const = 0;
399 static const Locale* U_EXPORT2 getAvailableLocales(int32_t& count);
428 static UDate U_EXPORT2 getNow(
void);
558 virtual void add(EDateFields field, int32_t amount,
UErrorCode& status);
582 #ifndef U_HIDE_DEPRECATED_API
683 virtual void roll(EDateFields field, int32_t amount,
UErrorCode& status);
773 virtual int32_t fieldDifference(
UDate when, EDateFields field,
UErrorCode& status);
840 void adoptTimeZone(
TimeZone* value);
849 void setTimeZone(
const TimeZone& zone);
859 const TimeZone& getTimeZone(
void)
const;
893 void setLenient(
UBool lenient);
901 UBool isLenient(
void)
const;
971 #ifndef U_HIDE_DEPRECATED_API
978 void setFirstDayOfWeek(EDaysOfWeek value);
989 #ifndef U_HIDE_DEPRECATED_API
996 EDaysOfWeek getFirstDayOfWeek(
void)
const;
1017 void setMinimalDaysInFirstWeek(uint8_t value);
1028 uint8_t getMinimalDaysInFirstWeek(
void)
const;
1038 virtual int32_t getMinimum(EDateFields field)
const;
1058 virtual int32_t getMaximum(EDateFields field)
const;
1078 virtual int32_t getGreatestMinimum(EDateFields field)
const;
1098 virtual int32_t getLeastMaximum(EDateFields field)
const;
1110 #ifndef U_HIDE_DEPRECATED_API
1125 int32_t getActualMinimum(EDateFields field,
UErrorCode& status)
const;
1144 #ifndef U_HIDE_DEPRECATED_API
1161 int32_t getActualMaximum(EDateFields field,
UErrorCode& status)
const;
1182 #ifndef U_HIDE_DEPRECATED_API
1196 int32_t get(EDateFields field,
UErrorCode& status)
const;
1214 #ifndef U_HIDE_DEPRECATED_API
1223 UBool isSet(EDateFields field)
const;
1236 #ifndef U_HIDE_DEPRECATED_API
1244 void set(EDateFields field, int32_t value);
1266 void set(int32_t year, int32_t month, int32_t date);
1280 void set(int32_t year, int32_t month, int32_t date, int32_t hour, int32_t minute);
1295 void set(int32_t year, int32_t month, int32_t date, int32_t hour, int32_t minute, int32_t second);
1305 #ifndef U_HIDE_DEPRECATED_API
1314 void clear(EDateFields field);
1376 virtual const char * getType()
const = 0;
1430 virtual UBool isWeekend(
void)
const;
1491 virtual void computeTime(
UErrorCode& status);
1504 virtual void computeFields(
UErrorCode& status);
1515 double getTimeInMillis(
UErrorCode& status)
const;
1525 void setTimeInMillis(
double millis,
UErrorCode& status );
1538 #ifndef U_HIDE_DEPRECATED_API
1550 #ifndef U_HIDE_INTERNAL_API
1574 #ifndef U_HIDE_DEPRECATED_API
1584 void internalSet(EDateFields field, int32_t value);
1611 #ifndef U_HIDE_INTERNAL_API
1612 UCAL_LIMIT_MINIMUM = 0,
1613 UCAL_LIMIT_GREATEST_MINIMUM,
1614 UCAL_LIMIT_LEAST_MAXIMUM,
1641 virtual int32_t handleGetLimit(
UCalendarDateFields field, ELimitType limitType)
const = 0;
1666 virtual int32_t handleComputeMonthStart(int32_t eyear, int32_t month,
1667 UBool useMonth)
const = 0;
1676 virtual int32_t handleGetMonthLength(int32_t extendedYear, int32_t month)
const ;
1685 virtual int32_t handleGetYearLength(int32_t eyear)
const;
1696 virtual int32_t handleGetExtendedYear() = 0;
1716 virtual int32_t handleGetExtendedYearFromWeekFields(int32_t yearWoy, int32_t woy);
1728 #ifndef U_HIDE_INTERNAL_API
1735 int32_t computeJulianDay();
1744 double computeMillisInDay();
1755 int32_t computeZoneOffset(
double millis,
double millisInDay,
UErrorCode &ec);
1837 #ifndef U_HIDE_INTERNAL_API
1964 virtual void handleComputeFields(int32_t julianDay,
UErrorCode &status);
1966 #ifndef U_HIDE_INTERNAL_API
1973 return fGregorianYear;
1982 return fGregorianMonth;
1991 return fGregorianDayOfYear;
2000 return fGregorianDayOfMonth;
2010 virtual int32_t getDefaultMonthInYear(int32_t eyear) ;
2020 virtual int32_t getDefaultDayInMonth(int32_t eyear, int32_t month);
2101 int32_t weekNumber(int32_t desiredDay, int32_t dayOfPeriod, int32_t dayOfWeek);
2104 #ifndef U_HIDE_INTERNAL_API
2135 inline int32_t weekNumber(int32_t dayOfPeriod, int32_t dayOfWeek);
2141 int32_t getLocalDOW();
2155 void recalculateStamp();
2194 uint8_t fMinimalDaysInFirstWeek;
2196 int32_t fWeekendOnsetMillis;
2198 int32_t fWeekendCeaseMillis;
2210 void setWeekData(
const Locale& desiredLocale,
const char *type,
UErrorCode& success);
2228 int32_t fGregorianYear;
2235 int32_t fGregorianMonth;
2242 int32_t fGregorianDayOfYear;
2249 int32_t fGregorianDayOfMonth;
2259 void computeGregorianAndDOWFields(int32_t julianDay,
UErrorCode &ec);
2270 void computeGregorianFields(int32_t julianDay,
UErrorCode &ec);
2318 #ifndef U_HIDE_INTERNAL_API
2328 static uint8_t julianDayToDayOfWeek(
double julian);
2336 #if !UCONFIG_NO_SERVICE
2341 #ifndef U_HIDE_INTERNAL_API
2387 friend class CalendarFactory;
2393 friend class CalendarService;
2399 friend class DefaultCalendarFactory;
2406 virtual UBool haveDefaultCentury()
const = 0;
2412 virtual UDate defaultCenturyStart()
const = 0;
2417 virtual int32_t defaultCenturyStartYear()
const = 0;
2432 virtual int32_t getRelatedYear(
UErrorCode &status)
const;
2439 virtual void setRelatedYear(int32_t year);
2441 #ifndef U_HIDE_INTERNAL_API
2468 #ifndef U_HIDE_INTERNAL_API
2477 static Calendar * U_EXPORT2 makeInstance(
2490 static void U_EXPORT2 getCalendarTypeFromLocale(
2493 int32_t typeBufferSize,
2504 return createInstance(zone, Locale::getDefault(), errorCode);
2512 roll(field, (int32_t)(up ? +1 : -1), status);
2515 #ifndef U_HIDE_DEPRECATED_API
2534 fFields[field] = value;
2535 fStamp[field] = kInternallySet;
2536 fIsSet[field] =
TRUE;
2540 #ifndef U_HIDE_INTERNAL_API
2541 inline int32_t Calendar::weekNumber(int32_t dayOfPeriod, int32_t dayOfWeek)
2543 return weekNumber(dayOfPeriod, dayOfPeriod, dayOfWeek);