ICU 60.1  60.1
Public Member Functions | Static Public Member Functions
icu::RuleBasedTimeZone Class Reference

a BasicTimeZone subclass implemented in terms of InitialTimeZoneRule and TimeZoneRule instances More...

#include <rbtz.h>

Inheritance diagram for icu::RuleBasedTimeZone:
icu::BasicTimeZone icu::TimeZone icu::UObject icu::UMemory

Public Member Functions

 RuleBasedTimeZone (const UnicodeString &id, InitialTimeZoneRule *initialRule)
 Constructs a RuleBasedTimeZone object with the ID and the InitialTimeZoneRule. More...
 
 RuleBasedTimeZone (const RuleBasedTimeZone &source)
 Copy constructor. More...
 
virtual ~RuleBasedTimeZone ()
 Destructor. More...
 
RuleBasedTimeZoneoperator= (const RuleBasedTimeZone &right)
 Assignment operator. More...
 
virtual UBool operator== (const TimeZone &that) const
 Return true if the given TimeZone objects are semantically equal. More...
 
virtual UBool operator!= (const TimeZone &that) const
 Return true if the given TimeZone objects are semantically unequal. More...
 
void addTransitionRule (TimeZoneRule *rule, UErrorCode &status)
 Adds the TimeZoneRule which represents time transitions. More...
 
void complete (UErrorCode &status)
 Makes the TimeZoneRule ready to handle actual timezone calcuation APIs. More...
 
virtual TimeZoneclone (void) const
 Clones TimeZone objects polymorphically. More...
 
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 local time in this time zone, taking daylight savings time into account) as of a particular reference date. More...
 
virtual int32_t getOffset (uint8_t era, int32_t year, int32_t month, int32_t day, uint8_t dayOfWeek, int32_t millis, int32_t monthLength, UErrorCode &status) const
 Gets the time zone offset, for current date, modified in case of daylight savings. More...
 
virtual void getOffset (UDate date, UBool local, int32_t &rawOffset, int32_t &dstOffset, UErrorCode &ec) const
 Returns the time zone raw and GMT offset for the given moment in time. More...
 
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, before taking daylight savings time into account). More...
 
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 time, before taking daylight savings time into account). More...
 
virtual UBool useDaylightTime (void) const
 Queries if this time zone uses daylight savings time. More...
 
virtual UBool inDaylightTime (UDate date, UErrorCode &status) const
 Queries if the given date is in daylight savings time in this time zone. More...
 
virtual UBool hasSameRules (const TimeZone &other) const
 Returns true if this zone has the same rule and offset as another zone. More...
 
virtual UBool getNextTransition (UDate base, UBool inclusive, TimeZoneTransition &result) const
 Gets the first time zone transition after the base time. More...
 
virtual UBool getPreviousTransition (UDate base, UBool inclusive, TimeZoneTransition &result) const
 Gets the most recent time zone transition before the base time. More...
 
virtual int32_t countTransitionRules (UErrorCode &status) const
 Returns the number of TimeZoneRules which represents time transitions, for this time zone, that is, all TimeZoneRules for this time zone except InitialTimeZoneRule. More...
 
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 time zone. More...
 
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. More...
 
virtual UClassID getDynamicClassID (void) const
 Returns a unique class ID POLYMORPHICALLY. More...
 
- Public Member Functions inherited from icu::BasicTimeZone
virtual ~BasicTimeZone ()
 Destructor. More...
 
virtual UBool hasEquivalentTransitions (const BasicTimeZone &tz, UDate start, UDate end, UBool ignoreDstAmount, UErrorCode &ec) const
 Checks if the time zone has equivalent transitions in the time range. More...
 
virtual void getSimpleRulesNear (UDate date, InitialTimeZoneRule *&initial, AnnualTimeZoneRule *&std, AnnualTimeZoneRule *&dst, UErrorCode &status) const
 Gets the set of time zone rules valid at the specified time. More...
 
- Public Member Functions inherited from icu::TimeZone
virtual ~TimeZone ()
 
UBool operator!= (const TimeZone &that) const
 Returns true if the two TimeZones are NOT equal; that is, if operator==() returns false. More...
 
UnicodeStringgetID (UnicodeString &ID) const
 Fills in "ID" with the TimeZone's ID. More...
 
void setID (const UnicodeString &ID)
 Sets the TimeZone's ID to the specified value. More...
 
UnicodeStringgetDisplayName (UnicodeString &result) const
 Returns a name of this time zone suitable for presentation to the user in the default locale. More...
 
UnicodeStringgetDisplayName (const Locale &locale, UnicodeString &result) const
 Returns a name of this time zone suitable for presentation to the user in the specified locale. More...
 
UnicodeStringgetDisplayName (UBool daylight, EDisplayType style, UnicodeString &result) const
 Returns a name of this time zone suitable for presentation to the user in the default locale. More...
 
UnicodeStringgetDisplayName (UBool daylight, EDisplayType style, const Locale &locale, UnicodeString &result) const
 Returns a name of this time zone suitable for presentation to the user in the specified locale. More...
 
virtual int32_t getDSTSavings () const
 Returns the amount of time to be added to local standard time to get local wall clock time. More...
 
- Public Member Functions inherited from icu::UObject
virtual ~UObject ()
 Destructor. More...
 

Static Public Member Functions

static UClassID getStaticClassID (void)
 Return the class ID for this class. More...
 
- Static Public Member Functions inherited from icu::TimeZone
static const TimeZonegetUnknown ()
 Returns the "unknown" time zone. More...
 
static const TimeZonegetGMT (void)
 The GMT (=UTC) time zone has a raw offset of zero and does not use daylight savings time. More...
 
static TimeZonecreateTimeZone (const UnicodeString &ID)
 Creates a TimeZone for the given ID. More...
 
static StringEnumerationcreateTimeZoneIDEnumeration (USystemTimeZoneType zoneType, const char *region, const int32_t *rawOffset, UErrorCode &ec)
 Returns an enumeration over system time zone IDs with the given filter conditions. More...
 
static StringEnumerationcreateEnumeration ()
 Returns an enumeration over all recognized time zone IDs. More...
 
static StringEnumerationcreateEnumeration (int32_t rawOffset)
 Returns an enumeration over time zone IDs with a given raw offset from GMT. More...
 
static StringEnumerationcreateEnumeration (const char *country)
 Returns an enumeration over time zone IDs associated with the given country. More...
 
static int32_t countEquivalentIDs (const UnicodeString &id)
 Returns the number of IDs in the equivalency group that includes the given ID. More...
 
static const UnicodeString getEquivalentID (const UnicodeString &id, int32_t index)
 Returns an ID in the equivalency group that includes the given ID. More...
 
static TimeZonedetectHostTimeZone ()
 Creates an instance of TimeZone detected from the current host system configuration. More...
 
static TimeZonecreateDefault (void)
 Creates a new copy of the default TimeZone for this host. More...
 
static void adoptDefault (TimeZone *zone)
 Sets the default time zone (i.e., what's returned by createDefault()) to be the specified time zone. More...
 
static void setDefault (const TimeZone &zone)
 Same as adoptDefault(), except that the TimeZone object passed in is NOT adopted; the caller remains responsible for deleting it. More...
 
static const char * getTZDataVersion (UErrorCode &status)
 Returns the timezone data version currently used by ICU. More...
 
static UnicodeStringgetCanonicalID (const UnicodeString &id, UnicodeString &canonicalID, UErrorCode &status)
 Returns the canonical system timezone ID or the normalized custom time zone ID for the given time zone ID. More...
 
static UnicodeStringgetCanonicalID (const UnicodeString &id, UnicodeString &canonicalID, UBool &isSystemID, UErrorCode &status)
 Returns the canonical system time zone ID or the normalized custom time zone ID for the given time zone ID. More...
 
static UnicodeStringgetWindowsID (const UnicodeString &id, UnicodeString &winid, UErrorCode &status)
 Converts a system time zone ID to an equivalent Windows time zone ID. More...
 
static UnicodeStringgetIDForWindowsID (const UnicodeString &winid, const char *region, UnicodeString &id, UErrorCode &status)
 Converts a Windows time zone ID to an equivalent system time zone ID for a region. More...
 
static UClassID getStaticClassID (void)
 Return the class ID for this class. More...
 
static int32_t getRegion (const UnicodeString &id, char *region, int32_t capacity, UErrorCode &status)
 Gets the region code associated with the given system time zone ID. More...
 
static const char16_t * getRegion (const UnicodeString &id, UErrorCode &status)
 Returns the region code associated with the given zone, or NULL if the zone is not known. More...
 

Additional Inherited Members

- Public Types inherited from icu::BasicTimeZone
enum  { kStandard = 0x01, kDaylight = 0x03, kFormer = 0x04, kLatter = 0x0C }
 The time type option bit flags used by getOffsetFromLocal. More...
 
- Public Types inherited from icu::TimeZone
enum  EDisplayType {
  SHORT = 1, LONG, SHORT_GENERIC, LONG_GENERIC,
  SHORT_GMT, LONG_GMT, SHORT_COMMONLY_USED, GENERIC_LOCATION
}
 Enum for use with getDisplayName. More...
 
- Protected Types inherited from icu::BasicTimeZone
enum  { kStdDstMask = kDaylight, kFormerLatterMask = kLatter }
 The time type option bit masks used by getOffsetFromLocal. More...
 
- Protected Member Functions inherited from icu::BasicTimeZone
 BasicTimeZone ()
 Default constructor. More...
 
 BasicTimeZone (const UnicodeString &id)
 Construct a timezone with a given ID. More...
 
 BasicTimeZone (const BasicTimeZone &source)
 Copy constructor. More...
 
void getTimeZoneRulesAfter (UDate start, InitialTimeZoneRule *&initial, UVector *&transitionRules, UErrorCode &status) const
 Gets the set of TimeZoneRule instances applicable to the specified time and after. More...
 
- Protected Member Functions inherited from icu::TimeZone
 TimeZone ()
 Default constructor. More...
 
 TimeZone (const UnicodeString &id)
 Construct a TimeZone with a given ID. More...
 
 TimeZone (const TimeZone &source)
 Copy constructor. More...
 
TimeZoneoperator= (const TimeZone &right)
 Default assignment operator. More...
 
- Static Protected Member Functions inherited from icu::TimeZone
static UResourceBundleloadRule (const UResourceBundle *top, const UnicodeString &ruleid, UResourceBundle *oldbundle, UErrorCode &status)
 Utility function. More...
 

Detailed Description

a BasicTimeZone subclass implemented in terms of InitialTimeZoneRule and TimeZoneRule instances

See also
BasicTimeZone
InitialTimeZoneRule
TimeZoneRule

Definition at line 36 of file rbtz.h.

Constructor & Destructor Documentation

◆ RuleBasedTimeZone() [1/2]

icu::RuleBasedTimeZone::RuleBasedTimeZone ( const UnicodeString id,
InitialTimeZoneRule initialRule 
)

Constructs a RuleBasedTimeZone object with the ID and the InitialTimeZoneRule.

The input InitialTimeZoneRule is adopted by this RuleBasedTimeZone, thus the caller must not delete it.

Parameters
idThe time zone ID.
initialRuleThe initial time zone rule.
Stable:
ICU 3.8

◆ RuleBasedTimeZone() [2/2]

icu::RuleBasedTimeZone::RuleBasedTimeZone ( const RuleBasedTimeZone source)

Copy constructor.

Parameters
sourceThe RuleBasedTimeZone object to be copied.
Stable:
ICU 3.8

◆ ~RuleBasedTimeZone()

virtual icu::RuleBasedTimeZone::~RuleBasedTimeZone ( )
virtual

Destructor.

Stable:
ICU 3.8

Member Function Documentation

◆ addTransitionRule()

void icu::RuleBasedTimeZone::addTransitionRule ( TimeZoneRule rule,
UErrorCode status 
)

Adds the TimeZoneRule which represents time transitions.

The TimeZoneRule must have start times, that is, the result of isTransitionRule() must be true. Otherwise, U_ILLEGAL_ARGUMENT_ERROR is set to the error code. The input TimeZoneRule is adopted by this RuleBasedTimeZone on successful completion of this method, thus, the caller must not delete it when no error is returned. After all rules are added, the caller must call complete() method to make this RuleBasedTimeZone ready to handle common time zone functions.

Parameters
ruleThe TimeZoneRule.
statusOutput param to filled in with a success or an error.
Stable:
ICU 3.8

◆ clone()

virtual TimeZone* icu::RuleBasedTimeZone::clone ( void  ) const
virtual

Clones TimeZone objects polymorphically.

Clients are responsible for deleting the TimeZone object cloned.

Returns
A new copy of this TimeZone object.
Stable:
ICU 3.8

Implements icu::TimeZone.

◆ complete()

void icu::RuleBasedTimeZone::complete ( UErrorCode status)

Makes the TimeZoneRule ready to handle actual timezone calcuation APIs.

This method collects time zone rules specified by the caller via the constructor and addTransitionRule() and builds internal structure for making the object ready to support time zone APIs such as getOffset(), getNextTransition() and others.

Parameters
statusOutput param to filled in with a success or an error.
Stable:
ICU 3.8

◆ countTransitionRules()

virtual int32_t icu::RuleBasedTimeZone::countTransitionRules ( UErrorCode status) const
virtual

Returns the number of TimeZoneRules which represents time transitions, for this time zone, that is, all TimeZoneRules for this time zone except InitialTimeZoneRule.

The return value range is 0 or any positive value.

Parameters
statusReceives error status code.
Returns
The number of TimeZoneRules representing time transitions.
Stable:
ICU 3.8

Implements icu::BasicTimeZone.

◆ getDynamicClassID()

virtual UClassID icu::RuleBasedTimeZone::getDynamicClassID ( void  ) const
virtual

Returns a unique class ID POLYMORPHICALLY.

Pure virtual override. This method is to implement a simple version of RTTI, since not all C++ compilers support genuine RTTI. Polymorphic operator==() and clone() methods call this method.

Returns
The class ID for this object. All objects of a given class have the same class ID. Objects of other classes have different class IDs.
Stable:
ICU 3.8

Implements icu::TimeZone.

◆ getNextTransition()

virtual UBool icu::RuleBasedTimeZone::getNextTransition ( UDate  base,
UBool  inclusive,
TimeZoneTransition result 
) const
virtual

Gets the first time zone transition after the base time.

Parameters
baseThe base time.
inclusiveWhether the base time is inclusive or not.
resultReceives the first transition after the base time.
Returns
TRUE if the transition is found.
Stable:
ICU 3.8

Implements icu::BasicTimeZone.

◆ getOffset() [1/3]

virtual int32_t icu::RuleBasedTimeZone::getOffset ( uint8_t  era,
int32_t  year,
int32_t  month,
int32_t  day,
uint8_t  dayOfWeek,
int32_t  millis,
UErrorCode status 
) const
virtual

Returns the TimeZone's adjusted GMT offset (i.e., the number of milliseconds to add to GMT to get local time in this time zone, taking daylight savings time into account) as of a particular reference date.

The reference date is used to determine whether daylight savings time is in effect and needs to be figured into the offset that is returned (in other words, what is the adjusted GMT offset in this time zone at this particular date and time?). For the time zones produced by createTimeZone(), the reference data is specified according to the Gregorian calendar, and the date and time fields are local standard time.

Note: Don't call this method. Instead, call the getOffset(UDate...) overload, which returns both the raw and the DST offset for a given time. This method is retained only for backward compatibility.

Parameters
eraThe reference date's era
yearThe reference date's year
monthThe reference date's month (0-based; 0 is January)
dayThe reference date's day-in-month (1-based)
dayOfWeekThe reference date's day-of-week (1-based; 1 is Sunday)
millisThe reference date's milliseconds in day, local standard time
statusOutput param to filled in with a success or an error.
Returns
The offset in milliseconds to add to GMT to get local time.
Stable:
ICU 3.8

Implements icu::TimeZone.

◆ getOffset() [2/3]

virtual int32_t icu::RuleBasedTimeZone::getOffset ( uint8_t  era,
int32_t  year,
int32_t  month,
int32_t  day,
uint8_t  dayOfWeek,
int32_t  millis,
int32_t  monthLength,
UErrorCode status 
) const
virtual

Gets the time zone offset, for current date, modified in case of daylight savings.

This is the offset to add to UTC to get local time.

Note: Don't call this method. Instead, call the getOffset(UDate...) overload, which returns both the raw and the DST offset for a given time. This method is retained only for backward compatibility.

Parameters
eraThe reference date's era
yearThe reference date's year
monthThe reference date's month (0-based; 0 is January)
dayThe reference date's day-in-month (1-based)
dayOfWeekThe reference date's day-of-week (1-based; 1 is Sunday)
millisThe reference date's milliseconds in day, local standard time
monthLengthThe length of the given month in days.
statusOutput param to filled in with a success or an error.
Returns
The offset in milliseconds to add to GMT to get local time.
Stable:
ICU 3.8

Implements icu::TimeZone.

◆ getOffset() [3/3]

virtual void icu::RuleBasedTimeZone::getOffset ( UDate  date,
UBool  local,
int32_t &  rawOffset,
int32_t &  dstOffset,
UErrorCode ec 
) const
virtual

Returns the time zone raw and GMT offset for the given moment in time.

Upon return, local-millis = GMT-millis + rawOffset + dstOffset. All computations are performed in the proleptic Gregorian calendar. The default implementation in the TimeZone class delegates to the 8-argument getOffset().

Parameters
datemoment in time for which to return offsets, in units of milliseconds from January 1, 1970 0:00 GMT, either GMT time or local wall time, depending on `local'.
localif true, `date' is local wall time; otherwise it is in GMT time.
rawOffsetoutput parameter to receive the raw offset, that is, the offset not including DST adjustments
dstOffsetoutput parameter to receive the DST offset, that is, the offset to be added to `rawOffset' to obtain the total offset between local and GMT time. If DST is not in effect, this value is zero; otherwise it is a positive value, typically one hour.
ecinput-output error code
Stable:
ICU 3.8

Reimplemented from icu::TimeZone.

◆ getOffsetFromLocal()

virtual void icu::RuleBasedTimeZone::getOffsetFromLocal ( UDate  date,
int32_t  nonExistingTimeOpt,
int32_t  duplicatedTimeOpt,
int32_t &  rawOffset,
int32_t &  dstOffset,
UErrorCode status 
) const
virtual

Get time zone offsets from local wall time.

Internal:
Do not use. This API is for internal use only.

Reimplemented from icu::BasicTimeZone.

◆ getPreviousTransition()

virtual UBool icu::RuleBasedTimeZone::getPreviousTransition ( UDate  base,
UBool  inclusive,
TimeZoneTransition result 
) const
virtual

Gets the most recent time zone transition before the base time.

Parameters
baseThe base time.
inclusiveWhether the base time is inclusive or not.
resultReceives the most recent transition before the base time.
Returns
TRUE if the transition is found.
Stable:
ICU 3.8

Implements icu::BasicTimeZone.

◆ getRawOffset()

virtual int32_t icu::RuleBasedTimeZone::getRawOffset ( void  ) const
virtual

Returns the TimeZone's raw GMT offset (i.e., the number of milliseconds to add to GMT to get local time, before taking daylight savings time into account).

Returns
The TimeZone's raw GMT offset.
Stable:
ICU 3.8

Implements icu::TimeZone.

◆ getStaticClassID()

static UClassID icu::RuleBasedTimeZone::getStaticClassID ( void  )
static

Return the class ID for this class.

This is useful only for comparing to a return value from getDynamicClassID(). For example:

.   Base* polymorphic_pointer = createPolymorphicObject();
.   if (polymorphic_pointer->getDynamicClassID() ==
.       erived::getStaticClassID()) ...
Returns
The class ID for all objects of this class.
Stable:
ICU 3.8

◆ getTimeZoneRules()

virtual void icu::RuleBasedTimeZone::getTimeZoneRules ( const InitialTimeZoneRule *&  initial,
const TimeZoneRule trsrules[],
int32_t &  trscount,
UErrorCode status 
) const
virtual

Gets the InitialTimeZoneRule and the set of TimeZoneRule which represent time transitions for this time zone.

On successful return, the argument initial points to non-NULL InitialTimeZoneRule and the array trsrules is filled with 0 or multiple TimeZoneRule instances up to the size specified by trscount. The results are referencing the rule instance held by this time zone instance. Therefore, after this time zone is destructed, they are no longer available.

Parameters
initialReceives the initial timezone rule
trsrulesReceives the timezone transition rules
trscountOn input, specify the size of the array 'transitions' receiving the timezone transition rules. On output, actual number of rules filled in the array will be set.
statusReceives error status code.
Stable:
ICU 3.8

Implements icu::BasicTimeZone.

◆ hasSameRules()

virtual UBool icu::RuleBasedTimeZone::hasSameRules ( const TimeZone other) const
virtual

Returns true if this zone has the same rule and offset as another zone.

That is, if this zone differs only in ID, if at all.

Parameters
otherthe TimeZone object to be compared with
Returns
true if the given zone is the same as this one, with the possible exception of the ID
Stable:
ICU 3.8

Reimplemented from icu::TimeZone.

◆ inDaylightTime()

virtual UBool icu::RuleBasedTimeZone::inDaylightTime ( UDate  date,
UErrorCode status 
) const
virtual

Queries if the given date is in daylight savings time in this time zone.

This method is wasteful since it creates a new GregorianCalendar and deletes it each time it is called. This is a deprecated method and provided only for Java compatibility.

Parameters
datethe given UDate.
statusOutput param filled in with success/error code.
Returns
true if the given date is in daylight savings time, false, otherwise.
Deprecated:
ICU 2.4. Use Calendar::inDaylightTime() instead.

Implements icu::TimeZone.

◆ operator!=()

virtual UBool icu::RuleBasedTimeZone::operator!= ( const TimeZone that) const
virtual

Return true if the given TimeZone objects are semantically unequal.

Objects of different subclasses are considered unequal.

Parameters
thatThe object to be compared with.
Returns
true if the given TimeZone objects are semantically unequal.
Stable:
ICU 3.8

◆ operator=()

RuleBasedTimeZone& icu::RuleBasedTimeZone::operator= ( const RuleBasedTimeZone right)

Assignment operator.

Parameters
rightThe object to be copied.
Stable:
ICU 3.8

◆ operator==()

virtual UBool icu::RuleBasedTimeZone::operator== ( const TimeZone that) const
virtual

Return true if the given TimeZone objects are semantically equal.

Objects of different subclasses are considered unequal.

Parameters
thatThe object to be compared with.
Returns
true if the given TimeZone objects are semantically equal.
Stable:
ICU 3.8

Reimplemented from icu::TimeZone.

◆ setRawOffset()

virtual void icu::RuleBasedTimeZone::setRawOffset ( int32_t  offsetMillis)
virtual

Sets the TimeZone's raw GMT offset (i.e., the number of milliseconds to add to GMT to get local time, before taking daylight savings time into account).

Parameters
offsetMillisThe new raw GMT offset for this time zone.
Stable:
ICU 3.8

Implements icu::TimeZone.

◆ useDaylightTime()

virtual UBool icu::RuleBasedTimeZone::useDaylightTime ( void  ) const
virtual

Queries if this time zone uses daylight savings time.

Returns
true if this time zone uses daylight savings time, false, otherwise.
Stable:
ICU 3.8

Implements icu::TimeZone.


The documentation for this class was generated from the following file: