ICU 73.2  73.2
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.
 RuleBasedTimeZone (const RuleBasedTimeZone &source)
 Copy constructor.
virtual ~RuleBasedTimeZone ()
 Destructor.
RuleBasedTimeZoneoperator= (const RuleBasedTimeZone &right)
 Assignment operator.
virtual bool operator== (const TimeZone &that) const override
 Return true if the given TimeZone objects are semantically equal.
virtual bool operator!= (const TimeZone &that) const
 Return true if the given TimeZone objects are semantically unequal.
void addTransitionRule (TimeZoneRule *rule, UErrorCode &status)
 Adds the `TimeZoneRule` which represents time transitions.
void complete (UErrorCode &status)
 Makes the TimeZoneRule ready to handle actual timezone calculation APIs.
virtual RuleBasedTimeZoneclone () const override
 Clones TimeZone objects polymorphically.
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 override
 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.
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 override
 Gets the time zone offset, for current date, modified in case of daylight savings.
virtual void getOffset (UDate date, UBool local, int32_t &rawOffset, int32_t &dstOffset, UErrorCode &ec) const override
 Returns the time zone raw and GMT offset for the given moment in time.
virtual void setRawOffset (int32_t offsetMillis) override
 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).
virtual int32_t getRawOffset (void) const override
 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).
virtual UBool useDaylightTime (void) const override
 Queries if this time zone uses daylight savings time.
virtual UBool inDaylightTime (UDate date, UErrorCode &status) const override
 Queries if the given date is in daylight savings time in this time zone.
virtual UBool hasSameRules (const TimeZone &other) const override
 Returns true if this zone has the same rule and offset as another zone.
virtual UBool getNextTransition (UDate base, UBool inclusive, TimeZoneTransition &result) const override
 Gets the first time zone transition after the base time.
virtual UBool getPreviousTransition (UDate base, UBool inclusive, TimeZoneTransition &result) const override
 Gets the most recent time zone transition before the base time.
virtual int32_t countTransitionRules (UErrorCode &status) const override
 Returns the number of TimeZoneRules which represents time transitions, for this time zone, that is, all TimeZoneRules for this time zone except InitialTimeZoneRule.
virtual void getTimeZoneRules (const InitialTimeZoneRule *&initial, const TimeZoneRule *trsrules[], int32_t &trscount, UErrorCode &status) const override
 Gets the InitialTimeZoneRule and the set of TimeZoneRule which represent time transitions for this time zone.
virtual void getOffsetFromLocal (UDate date, UTimeZoneLocalOption nonExistingTimeOpt, UTimeZoneLocalOption duplicatedTimeOpt, int32_t &rawOffset, int32_t &dstOffset, UErrorCode &status) const override
 Get time zone offsets from local wall time.
virtual UClassID getDynamicClassID (void) const override
 Returns a unique class ID POLYMORPHICALLY.

Static Public Member Functions

static UClassID getStaticClassID (void)
 Return the class ID for this class.

Detailed Description

a BasicTimeZone subclass implemented in terms of InitialTimeZoneRule and TimeZoneRule instances

See also:
BasicTimeZone
InitialTimeZoneRule
TimeZoneRule

Definition at line 38 of file rbtz.h.


Constructor & Destructor Documentation

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

Copy constructor.

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

Destructor.

Stable:
ICU 3.8

Member Function Documentation

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`; the caller must not delete it. Should an error condition prevent the successful adoption of the rule, this function will delete it.

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
virtual RuleBasedTimeZone* icu::RuleBasedTimeZone::clone ( ) const [override, 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::BasicTimeZone.

Makes the TimeZoneRule ready to handle actual timezone calculation 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
virtual int32_t icu::RuleBasedTimeZone::countTransitionRules ( UErrorCode status) const [override, 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.

virtual UClassID icu::RuleBasedTimeZone::getDynamicClassID ( void  ) const [override, 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.

virtual UBool icu::RuleBasedTimeZone::getNextTransition ( UDate  base,
UBool  inclusive,
TimeZoneTransition result 
) const [override, 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.

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 [override, 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.

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 [override, 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.

virtual void icu::RuleBasedTimeZone::getOffset ( UDate  date,
UBool  local,
int32_t &  rawOffset,
int32_t &  dstOffset,
UErrorCode ec 
) const [override, 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.

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

Get time zone offsets from local wall time.

Stable:
ICU 69

Reimplemented from icu::BasicTimeZone.

virtual UBool icu::RuleBasedTimeZone::getPreviousTransition ( UDate  base,
UBool  inclusive,
TimeZoneTransition result 
) const [override, 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.

virtual int32_t icu::RuleBasedTimeZone::getRawOffset ( void  ) const [override, 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.

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

Reimplemented from icu::TimeZone.

virtual void icu::RuleBasedTimeZone::getTimeZoneRules ( const InitialTimeZoneRule *&  initial,
const TimeZoneRule trsrules[],
int32_t &  trscount,
UErrorCode status 
) const [override, 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-nullptr 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.

virtual UBool icu::RuleBasedTimeZone::hasSameRules ( const TimeZone other) const [override, 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.

virtual UBool icu::RuleBasedTimeZone::inDaylightTime ( UDate  date,
UErrorCode status 
) const [override, 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.

virtual bool 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

Reimplemented from icu::TimeZone.

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

Assignment operator.

Parameters:
rightThe object to be copied.
Stable:
ICU 3.8
virtual bool icu::RuleBasedTimeZone::operator== ( const TimeZone that) const [override, 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.

virtual void icu::RuleBasedTimeZone::setRawOffset ( int32_t  offsetMillis) [override, 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.

virtual UBool icu::RuleBasedTimeZone::useDaylightTime ( void  ) const [override, 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: