34 #if !UCONFIG_NO_FORMATTING
41 class InitialTimeZoneRule;
42 class TimeZoneTransition;
43 class AnnualTimeZoneRule;
161 int8_t savingsStartMonth, int8_t savingsStartDayOfWeekInMonth,
162 int8_t savingsStartDayOfWeek, int32_t savingsStartTime,
163 int8_t savingsEndMonth, int8_t savingsEndDayOfWeekInMonth,
164 int8_t savingsEndDayOfWeek, int32_t savingsEndTime,
204 int8_t savingsStartMonth, int8_t savingsStartDayOfWeekInMonth,
205 int8_t savingsStartDayOfWeek, int32_t savingsStartTime,
206 int8_t savingsEndMonth, int8_t savingsEndDayOfWeekInMonth,
207 int8_t savingsEndDayOfWeek, int32_t savingsEndTime,
252 int8_t savingsStartMonth, int8_t savingsStartDayOfWeekInMonth,
253 int8_t savingsStartDayOfWeek, int32_t savingsStartTime,
254 TimeMode savingsStartTimeMode,
255 int8_t savingsEndMonth, int8_t savingsEndDayOfWeekInMonth,
256 int8_t savingsEndDayOfWeek, int32_t savingsEndTime, TimeMode savingsEndTimeMode,
267 void setStartYear(int32_t year);
311 void setStartRule(int32_t month, int32_t dayOfWeekInMonth, int32_t dayOfWeek,
357 void setStartRule(int32_t month, int32_t dayOfWeekInMonth, int32_t dayOfWeek,
358 int32_t time, TimeMode mode,
UErrorCode& status);
371 void setStartRule(int32_t month, int32_t dayOfMonth, int32_t time,
386 void setStartRule(int32_t month, int32_t dayOfMonth, int32_t time,
405 void setStartRule(int32_t month, int32_t dayOfMonth, int32_t dayOfWeek,
425 void setStartRule(int32_t month, int32_t dayOfMonth, int32_t dayOfWeek,
450 void setEndRule(int32_t month, int32_t dayOfWeekInMonth, int32_t dayOfWeek,
477 void setEndRule(int32_t month, int32_t dayOfWeekInMonth, int32_t dayOfWeek,
478 int32_t time, TimeMode mode,
UErrorCode& status);
491 void setEndRule(int32_t month, int32_t dayOfMonth, int32_t time,
UErrorCode& status);
506 void setEndRule(int32_t month, int32_t dayOfMonth, int32_t time,
525 void setEndRule(int32_t month, int32_t dayOfMonth, int32_t dayOfWeek,
546 void setEndRule(int32_t month, int32_t dayOfMonth, int32_t dayOfWeek,
569 virtual int32_t
getOffset(uint8_t era, int32_t year, int32_t month, int32_t day,
570 uint8_t dayOfWeek, int32_t millis,
UErrorCode& status)
const;
587 virtual int32_t
getOffset(uint8_t era, int32_t year, int32_t month, int32_t day,
588 uint8_t dayOfWeek, int32_t milliseconds,
589 int32_t monthLength,
UErrorCode& status)
const;
606 virtual int32_t
getOffset(uint8_t era, int32_t year, int32_t month, int32_t day,
607 uint8_t dayOfWeek, int32_t milliseconds,
608 int32_t monthLength, int32_t prevMonthLength,
624 int32_t& rawOffset, int32_t& dstOffset,
UErrorCode& status)
const;
652 void setDSTSavings(int32_t millisSavedDuringDST,
UErrorCode& status);
814 void construct(int32_t rawOffsetGMT,
815 int8_t startMonth, int8_t startDay, int8_t startDayOfWeek,
816 int32_t startTime, TimeMode startTimeMode,
817 int8_t endMonth, int8_t endDay, int8_t endDayOfWeek,
818 int32_t endTime, TimeMode endTimeMode,
830 static int32_t compareToRule(int8_t month, int8_t monthLen, int8_t prevMonthLen,
832 int8_t dayOfWeek, int32_t millis, int32_t millisDelta,
833 EMode ruleMode, int8_t ruleMonth, int8_t ruleDayOfWeek,
834 int8_t ruleDay, int32_t ruleMillis);
855 int8_t startMonth, startDay, startDayOfWeek;
857 TimeMode startTimeMode, endTimeMode;
858 int8_t endMonth, endDay, endDayOfWeek;
863 static const int8_t STATICMONTHLENGTH[12];
864 EMode startMode, endMode;
873 void checkTransitionRules(
UErrorCode& status)
const;
875 void clearTransitionRules(
void);
876 void deleteTransitionRules(
void);
877 UBool transitionRulesInitialized;
878 InitialTimeZoneRule* initialRule;
879 TimeZoneTransition* firstTransition;
880 AnnualTimeZoneRule* stdRule;
881 AnnualTimeZoneRule* dstRule;
884 inline void SimpleTimeZone::setStartRule(int32_t month, int32_t dayOfWeekInMonth,
887 setStartRule(month, dayOfWeekInMonth, dayOfWeek, time, WALL_TIME, status);
890 inline void SimpleTimeZone::setStartRule(int32_t month, int32_t dayOfMonth,
893 setStartRule(month, dayOfMonth, time, WALL_TIME, status);
896 inline void SimpleTimeZone::setStartRule(int32_t month, int32_t dayOfMonth,
899 setStartRule(month, dayOfMonth, dayOfWeek, time, WALL_TIME, after, status);
902 inline void SimpleTimeZone::setEndRule(int32_t month, int32_t dayOfWeekInMonth,
905 setEndRule(month, dayOfWeekInMonth, dayOfWeek, time, WALL_TIME, status);
908 inline void SimpleTimeZone::setEndRule(int32_t month, int32_t dayOfMonth,
910 setEndRule(month, dayOfMonth, time, WALL_TIME, status);
913 inline void SimpleTimeZone::setEndRule(int32_t month, int32_t dayOfMonth, int32_t dayOfWeek,
915 setEndRule(month, dayOfMonth, dayOfWeek, time, WALL_TIME, after, status);
919 SimpleTimeZone::getOffset(
UDate date,
UBool local, int32_t& rawOffsetRef,
920 int32_t& dstOffsetRef,
UErrorCode& ec)
const {
921 TimeZone::getOffset(date, local, rawOffsetRef, dstOffsetRef, ec);
virtual UBool useDaylightTime(void) const =0
Queries if this time zone uses daylight savings time.
virtual UBool getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition &result) const =0
Gets the most recent time zone transition before the base time.
virtual int32_t getOffset(uint8_t era, int32_t year, int32_t month, int32_t day, uint8_t dayOfWeek, int32_t millis, UErrorCode &status) const =0
Returns the TimeZone's adjusted GMT offset (i.e., the number of milliseconds to add to GMT to get loc...
virtual UBool operator==(const TimeZone &that) const
Returns true if the two TimeZones are equal.
TimeZone & operator=(const TimeZone &right)
Default assignment operator.
virtual void getOffsetFromLocal(UDate date, int32_t nonExistingTimeOpt, int32_t duplicatedTimeOpt, int32_t &rawOffset, int32_t &dstOffset, UErrorCode &status) const
Get time zone offsets from local wall time.
double UDate
Date and Time data type.
void * UClassID
UClassID is used to identify classes without using the compiler's RTTI.
static UClassID getStaticClassID(void)
Return the class ID for this class.
TimeZone represents a time zone offset, and also figures out daylight savings.
C++ API: ICU TimeZone base class.
#define U_I18N_API
Set to export library symbols from inside the i18n library, and to import them from outside...
TimeZoneRule is a class representing a rule for time zone.
InitialTimeZoneRule represents a time zone rule representing a time zone effective from the beginning...
TimeMode
TimeMode is used, together with a millisecond offset after midnight, to specify a rule transition tim...
#define U_NAMESPACE_BEGIN
This is used to begin a declaration of a public ICU C++ API.
virtual TimeZone * clone(void) const =0
Clones TimeZone objects polymorphically.
virtual UBool hasSameRules(const TimeZone &other) const
Returns true if this zone has the same rule and offset as another zone.
virtual int32_t getDSTSavings() const
Returns the amount of time to be added to local standard time to get local wall clock time...
TimeZoneTransition is a class representing a time zone transition.
virtual UClassID getDynamicClassID(void) const =0
Returns a unique class ID POLYMORPHICALLY.
BasicTimeZone is an abstract class extending TimeZone.
SimpleTimeZone is a concrete subclass of TimeZone that represents a time zone for use with a Gregoria...
#define U_NAMESPACE_END
This is used to end a declaration of a public ICU C++ API.
virtual void setRawOffset(int32_t offsetMillis)=0
Sets the TimeZone's raw GMT offset (i.e., the number of milliseconds to add to GMT to get local time...
UErrorCode
Error code to replace exception handling, so that the code is compatible with all C++ compilers...
virtual void getTimeZoneRules(const InitialTimeZoneRule *&initial, const TimeZoneRule *trsrules[], int32_t &trscount, UErrorCode &status) const =0
Gets the InitialTimeZoneRule and the set of TimeZoneRule which represent time transitions for this ti...
Basic definitions for ICU, for both C and C++ APIs.
UnicodeString is a string class that stores Unicode characters directly and provides similar function...
virtual UBool getNextTransition(UDate base, UBool inclusive, TimeZoneTransition &result) const =0
Gets the first time zone transition after the base time.
virtual int32_t countTransitionRules(UErrorCode &status) const =0
Returns the number of TimeZoneRules which represents time transitions, for this time zone...
virtual int32_t getRawOffset(void) const =0
Returns the TimeZone's raw GMT offset (i.e., the number of milliseconds to add to GMT to get local ti...
virtual UBool inDaylightTime(UDate date, UErrorCode &status) const =0
Queries if the given date is in daylight savings time in this time zone.
int8_t UBool
The ICU boolean type.