Go to the documentation of this file.
31 #if U_SHOW_CPLUSPLUS_API
38 #if !UCONFIG_NO_FORMATTING
45 class InitialTimeZoneRule;
46 class TimeZoneTransition;
47 class AnnualTimeZoneRule;
165 int8_t savingsStartMonth, int8_t savingsStartDayOfWeekInMonth,
166 int8_t savingsStartDayOfWeek, int32_t savingsStartTime,
167 int8_t savingsEndMonth, int8_t savingsEndDayOfWeekInMonth,
168 int8_t savingsEndDayOfWeek, int32_t savingsEndTime,
208 int8_t savingsStartMonth, int8_t savingsStartDayOfWeekInMonth,
209 int8_t savingsStartDayOfWeek, int32_t savingsStartTime,
210 int8_t savingsEndMonth, int8_t savingsEndDayOfWeekInMonth,
211 int8_t savingsEndDayOfWeek, int32_t savingsEndTime,
256 int8_t savingsStartMonth, int8_t savingsStartDayOfWeekInMonth,
257 int8_t savingsStartDayOfWeek, int32_t savingsStartTime,
259 int8_t savingsEndMonth, int8_t savingsEndDayOfWeekInMonth,
260 int8_t savingsEndDayOfWeek, int32_t savingsEndTime,
TimeMode savingsEndTimeMode,
315 void setStartRule(int32_t month, int32_t dayOfWeekInMonth, int32_t dayOfWeek,
361 void setStartRule(int32_t month, int32_t dayOfWeekInMonth, int32_t dayOfWeek,
375 void setStartRule(int32_t month, int32_t dayOfMonth, int32_t time,
409 void setStartRule(int32_t month, int32_t dayOfMonth, int32_t dayOfWeek,
429 void setStartRule(int32_t month, int32_t dayOfMonth, int32_t dayOfWeek,
454 void setEndRule(int32_t month, int32_t dayOfWeekInMonth, int32_t dayOfWeek,
481 void setEndRule(int32_t month, int32_t dayOfWeekInMonth, int32_t dayOfWeek,
495 void setEndRule(int32_t month, int32_t dayOfMonth, int32_t time,
UErrorCode& status);
510 void setEndRule(int32_t month, int32_t dayOfMonth, int32_t time,
529 void setEndRule(int32_t month, int32_t dayOfMonth, int32_t dayOfWeek,
550 void setEndRule(int32_t month, int32_t dayOfMonth, int32_t dayOfWeek,
573 virtual int32_t
getOffset(uint8_t era, int32_t year, int32_t month, int32_t day,
574 uint8_t dayOfWeek, int32_t millis,
UErrorCode& status)
const;
591 virtual int32_t
getOffset(uint8_t era, int32_t year, int32_t month, int32_t day,
592 uint8_t dayOfWeek, int32_t milliseconds,
593 int32_t monthLength,
UErrorCode& status)
const;
610 virtual int32_t
getOffset(uint8_t era, int32_t year, int32_t month, int32_t day,
611 uint8_t dayOfWeek, int32_t milliseconds,
612 int32_t monthLength, int32_t prevMonthLength,
628 int32_t& rawOffset, int32_t& dstOffset,
UErrorCode& status)
const;
677 #ifndef U_FORCE_HIDE_DEPRECATED_API
693 #endif // U_FORCE_HIDE_DEPRECATED_API
822 void construct(int32_t rawOffsetGMT,
823 int8_t startMonth, int8_t startDay, int8_t startDayOfWeek,
824 int32_t startTime, TimeMode startTimeMode,
825 int8_t endMonth, int8_t endDay, int8_t endDayOfWeek,
826 int32_t endTime, TimeMode endTimeMode,
838 static int32_t compareToRule(int8_t month, int8_t monthLen, int8_t prevMonthLen,
840 int8_t dayOfWeek, int32_t millis, int32_t millisDelta,
841 EMode ruleMode, int8_t ruleMonth, int8_t ruleDayOfWeek,
842 int8_t ruleDay, int32_t ruleMillis);
863 int8_t startMonth, startDay, startDayOfWeek;
865 TimeMode startTimeMode, endTimeMode;
866 int8_t endMonth, endDay, endDayOfWeek;
871 static const int8_t STATICMONTHLENGTH[12];
872 EMode startMode, endMode;
881 void checkTransitionRules(
UErrorCode& status)
const;
883 void clearTransitionRules(
void);
884 void deleteTransitionRules(
void);
885 UBool transitionRulesInitialized;
892 inline void SimpleTimeZone::setStartRule(int32_t month, int32_t dayOfWeekInMonth,
895 setStartRule(month, dayOfWeekInMonth, dayOfWeek, time, WALL_TIME, status);
898 inline void SimpleTimeZone::setStartRule(int32_t month, int32_t dayOfMonth,
901 setStartRule(month, dayOfMonth, time, WALL_TIME, status);
904 inline void SimpleTimeZone::setStartRule(int32_t month, int32_t dayOfMonth,
907 setStartRule(month, dayOfMonth, dayOfWeek, time, WALL_TIME, after, status);
910 inline void SimpleTimeZone::setEndRule(int32_t month, int32_t dayOfWeekInMonth,
913 setEndRule(month, dayOfWeekInMonth, dayOfWeek, time, WALL_TIME, status);
916 inline void SimpleTimeZone::setEndRule(int32_t month, int32_t dayOfMonth,
918 setEndRule(month, dayOfMonth, time, WALL_TIME, status);
921 inline void SimpleTimeZone::setEndRule(int32_t month, int32_t dayOfMonth, int32_t dayOfWeek,
923 setEndRule(month, dayOfMonth, dayOfWeek, time, WALL_TIME, after, status);
927 SimpleTimeZone::getOffset(
UDate date,
UBool local, int32_t& rawOffsetRef,
928 int32_t& dstOffsetRef,
UErrorCode& ec)
const {
929 TimeZone::getOffset(date, local, rawOffsetRef, dstOffsetRef, ec);
virtual UBool useDaylightTime(void) const
Queries if this TimeZone uses Daylight Savings Time.
SimpleTimeZone(int32_t rawOffsetGMT, const UnicodeString &ID)
Constructs a SimpleTimeZone with the given raw GMT offset and time zone ID, and which doesn't observe...
SimpleTimeZone & operator=(const SimpleTimeZone &right)
Default assignment operator.
virtual UBool getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition &result) const
Gets the most recent time zone transition before the base time.
Basic definitions for ICU, for both C and C++ APIs.
virtual void setRawOffset(int32_t offsetMillis)
Sets the TimeZone's raw GMT offset (i.e., the number of milliseconds to add to GMT to get local time,...
static UClassID getStaticClassID(void)
Return the class ID for this class.
virtual SimpleTimeZone * clone() const
Clones TimeZone objects polymorphically.
#define U_I18N_API
Set to export library symbols from inside the i18n library, and to import them from outside.
int8_t UBool
The ICU boolean type.
void setStartRule(int32_t month, int32_t dayOfMonth, int32_t time, TimeMode mode, UErrorCode &status)
Sets the DST start rule to a fixed date within a month.
BasicTimeZone is an abstract class extending TimeZone.
void setStartRule(int32_t month, int32_t dayOfWeekInMonth, int32_t dayOfWeek, int32_t time, TimeMode mode, UErrorCode &status)
Sets the daylight savings starting rule.
virtual void getTimeZoneRules(const InitialTimeZoneRule *&initial, const TimeZoneRule *trsrules[], int32_t &trscount, UErrorCode &status) const
Gets the InitialTimeZoneRule and the set of TimeZoneRule which represent time transitions for this ti...
TimeZoneRule is a class representing a rule for time zone.
TimeZone represents a time zone offset, and also figures out daylight savings.
void setEndRule(int32_t month, int32_t dayOfWeekInMonth, int32_t dayOfWeek, int32_t time, TimeMode mode, UErrorCode &status)
Sets the daylight savings ending rule.
virtual UBool inDaylightTime(UDate date, UErrorCode &status) const
Returns true if the given date is within the period when daylight savings time is in effect; false ot...
UnicodeString is a string class that stores Unicode characters directly and provides similar function...
void setStartYear(int32_t year)
Sets the daylight savings starting year, that is, the year this time zone began observing its specifi...
virtual ~SimpleTimeZone()
Destructor.
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.
AnnualTimeZoneRule is a class used for representing a time zone rule which takes effect annually.
void * UClassID
UClassID is used to identify classes without using the compiler's RTTI.
UErrorCode
Standard ICU4C error code type, a substitute for exceptions.
virtual int32_t getOffset(uint8_t era, int32_t year, int32_t month, int32_t day, uint8_t dayOfWeek, int32_t milliseconds, int32_t monthLength, UErrorCode &status) const
Gets the time zone offset, for current date, modified in case of daylight savings.
C++ API: ICU TimeZone base class.
virtual int32_t getOffset(uint8_t era, int32_t year, int32_t month, int32_t day, uint8_t dayOfWeek, int32_t milliseconds, int32_t monthLength, int32_t prevMonthLength, UErrorCode &status) const
Gets the time zone offset, for current date, modified in case of daylight savings.
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...
SimpleTimeZone is a concrete subclass of TimeZone that represents a time zone for use with a Gregoria...
SimpleTimeZone(int32_t rawOffsetGMT, const UnicodeString &ID, int8_t savingsStartMonth, int8_t savingsStartDayOfWeekInMonth, int8_t savingsStartDayOfWeek, int32_t savingsStartTime, int8_t savingsEndMonth, int8_t savingsEndDayOfWeekInMonth, int8_t savingsEndDayOfWeek, int32_t savingsEndTime, UErrorCode &status)
Construct a SimpleTimeZone with the given raw GMT offset, time zone ID, and times to start and end da...
SimpleTimeZone(int32_t rawOffsetGMT, const UnicodeString &ID, int8_t savingsStartMonth, int8_t savingsStartDayOfWeekInMonth, int8_t savingsStartDayOfWeek, int32_t savingsStartTime, int8_t savingsEndMonth, int8_t savingsEndDayOfWeekInMonth, int8_t savingsEndDayOfWeek, int32_t savingsEndTime, int32_t savingsDST, UErrorCode &status)
Construct a SimpleTimeZone with the given raw GMT offset, time zone ID, and times to start and end da...
InitialTimeZoneRule represents a time zone rule representing a time zone effective from the beginning...
TimeZoneTransition is a class representing a time zone transition.
TimeMode
TimeMode is used, together with a millisecond offset after midnight, to specify a rule transition tim...
virtual UBool getNextTransition(UDate base, UBool inclusive, TimeZoneTransition &result) const
Gets the first time zone transition after the base time.
double UDate
Date and Time data type.
SimpleTimeZone(const SimpleTimeZone &source)
Copy constructor.
virtual int32_t getDSTSavings(void) const
Returns the amount of time in ms that the clock is advanced during DST.
void setEndRule(int32_t month, int32_t dayOfMonth, int32_t dayOfWeek, int32_t time, TimeMode mode, UBool after, UErrorCode &status)
Sets the DST end rule to a weekday before or after a give date within a month, e.g....
UBool hasSameRules(const TimeZone &other) const
Return true if this zone has the same rules and offset as another zone.
void setDSTSavings(int32_t millisSavedDuringDST, UErrorCode &status)
Sets the amount of time in ms that the clock is advanced during DST.
virtual int32_t getRawOffset(void) const
Returns the TimeZone's raw GMT offset (i.e., the number of milliseconds to add to GMT to get local ti...
SimpleTimeZone(int32_t rawOffsetGMT, const UnicodeString &ID, int8_t savingsStartMonth, int8_t savingsStartDayOfWeekInMonth, int8_t savingsStartDayOfWeek, int32_t savingsStartTime, TimeMode savingsStartTimeMode, int8_t savingsEndMonth, int8_t savingsEndDayOfWeekInMonth, int8_t savingsEndDayOfWeek, int32_t savingsEndTime, TimeMode savingsEndTimeMode, int32_t savingsDST, UErrorCode &status)
Construct a SimpleTimeZone with the given raw GMT offset, time zone ID, and times to start and end da...
void setStartRule(int32_t month, int32_t dayOfMonth, int32_t dayOfWeek, int32_t time, TimeMode mode, UBool after, UErrorCode &status)
Sets the DST start rule to a weekday before or after a give date within a month, e....
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
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 TimeZone objects are equal; that is, they have the same ID,...
virtual UClassID getDynamicClassID(void) const
Override TimeZone Returns a unique class ID POLYMORPHICALLY.
virtual int32_t countTransitionRules(UErrorCode &status) const
Returns the number of TimeZoneRules which represents time transitions, for this time zone,...
void setEndRule(int32_t month, int32_t dayOfMonth, int32_t time, TimeMode mode, UErrorCode &status)
Sets the DST end rule to a fixed date within a month.