a BasicTimeZone subclass implemented in terms of InitialTimeZoneRule and TimeZoneRule instances More...
#include <rbtz.h>
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. | |
RuleBasedTimeZone & | operator= (const RuleBasedTimeZone &right) |
Assignment operator. | |
virtual UBool | operator== (const TimeZone &that) const |
Return true if the given TimeZone objects are semantically equal. | |
virtual UBool | 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 calcuation APIs. | |
virtual TimeZone * | clone (void) const |
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 |
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 |
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 |
Returns the time zone raw and GMT offset for the given moment in time. | |
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). | |
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). | |
virtual UBool | useDaylightTime (void) const |
Queries if this time zone uses daylight savings time. | |
virtual UBool | inDaylightTime (UDate date, UErrorCode &status) const |
Queries if the given date is in daylight savings time in this time zone. | |
virtual UBool | hasSameRules (const TimeZone &other) const |
Returns true if this zone has the same rule and offset as another zone. | |
virtual UBool | getNextTransition (UDate base, UBool inclusive, TimeZoneTransition &result) |
Gets the first time zone transition after the base time. | |
virtual UBool | getPreviousTransition (UDate base, UBool inclusive, TimeZoneTransition &result) |
Gets the most recent time zone transition before the base time. | |
virtual int32_t | countTransitionRules (UErrorCode &status) |
Returns the number of TimeZoneRule s which represents time transitions, for this time zone, that is, all TimeZoneRule s for this time zone except InitialTimeZoneRule . | |
virtual void | getTimeZoneRules (const InitialTimeZoneRule *&initial, const TimeZoneRule *trsrules[], int32_t &trscount, UErrorCode &status) |
Gets the InitialTimeZoneRule and the set of TimeZoneRule which represent time transitions for this time zone. | |
virtual void | getOffsetFromLocal (UDate date, int32_t nonExistingTimeOpt, int32_t duplicatedTimeOpt, int32_t &rawOffset, int32_t &dstOffset, UErrorCode &status) |
Get time zone offsets from local wall time. | |
virtual UClassID | getDynamicClassID (void) const |
Returns a unique class ID POLYMORPHICALLY. | |
Static Public Member Functions | |
static UClassID | getStaticClassID (void) |
Return the class ID for this class. |
a BasicTimeZone subclass implemented in terms of InitialTimeZoneRule and TimeZoneRule instances
Definition at line 34 of file rbtz.h.
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.
id | The time zone ID. | |
initialRule | The initial time zone rule. |
RuleBasedTimeZone::RuleBasedTimeZone | ( | const RuleBasedTimeZone & | source | ) |
virtual RuleBasedTimeZone::~RuleBasedTimeZone | ( | ) | [virtual] |
Destructor.
void 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.
rule | The TimeZoneRule . | |
status | Output param to filled in with a success or an error. |
virtual TimeZone* RuleBasedTimeZone::clone | ( | void | ) | const [virtual] |
void 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.
status | Output param to filled in with a success or an error. |
virtual int32_t RuleBasedTimeZone::countTransitionRules | ( | UErrorCode & | status | ) | [virtual] |
Returns the number of TimeZoneRule
s which represents time transitions, for this time zone, that is, all TimeZoneRule
s for this time zone except InitialTimeZoneRule
.
The return value range is 0 or any positive value.
status | Receives error status code. |
TimeZoneRule
s representing time transitions. Implements BasicTimeZone.
virtual UClassID 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.
Implements TimeZone.
virtual UBool RuleBasedTimeZone::getNextTransition | ( | UDate | base, | |
UBool | inclusive, | |||
TimeZoneTransition & | result | |||
) | [virtual] |
Gets the first time zone transition after the base time.
base | The base time. | |
inclusive | Whether the base time is inclusive or not. | |
result | Receives the first transition after the base time. |
Implements BasicTimeZone.
virtual void 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().
date | moment 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'. | |
local | if true, `date' is local wall time; otherwise it is in GMT time. | |
rawOffset | output parameter to receive the raw offset, that is, the offset not including DST adjustments | |
dstOffset | output 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. | |
ec | input-output error code |
Reimplemented from TimeZone.
virtual int32_t 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.
era | The reference date's era | |
year | The reference date's year | |
month | The reference date's month (0-based; 0 is January) | |
day | The reference date's day-in-month (1-based) | |
dayOfWeek | The reference date's day-of-week (1-based; 1 is Sunday) | |
millis | The reference date's milliseconds in day, local standard time | |
monthLength | The length of the given month in days. | |
status | Output param to filled in with a success or an error. |
Implements TimeZone.
virtual int32_t 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.
era | The reference date's era | |
year | The reference date's year | |
month | The reference date's month (0-based; 0 is January) | |
day | The reference date's day-in-month (1-based) | |
dayOfWeek | The reference date's day-of-week (1-based; 1 is Sunday) | |
millis | The reference date's milliseconds in day, local standard time | |
status | Output param to filled in with a success or an error. |
Implements TimeZone.
virtual void RuleBasedTimeZone::getOffsetFromLocal | ( | UDate | date, | |
int32_t | nonExistingTimeOpt, | |||
int32_t | duplicatedTimeOpt, | |||
int32_t & | rawOffset, | |||
int32_t & | dstOffset, | |||
UErrorCode & | status | |||
) | [virtual] |
Get time zone offsets from local wall time.
Reimplemented from BasicTimeZone.
virtual UBool RuleBasedTimeZone::getPreviousTransition | ( | UDate | base, | |
UBool | inclusive, | |||
TimeZoneTransition & | result | |||
) | [virtual] |
Gets the most recent time zone transition before the base time.
base | The base time. | |
inclusive | Whether the base time is inclusive or not. | |
result | Receives the most recent transition before the base time. |
Implements BasicTimeZone.
virtual int32_t RuleBasedTimeZone::getRawOffset | ( | void | ) | const [virtual] |
static UClassID 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()) ...
Reimplemented from TimeZone.
virtual void RuleBasedTimeZone::getTimeZoneRules | ( | const InitialTimeZoneRule *& | initial, | |
const TimeZoneRule * | trsrules[], | |||
int32_t & | trscount, | |||
UErrorCode & | status | |||
) | [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.
initial | Receives the initial timezone rule | |
trsrules | Receives the timezone transition rules | |
trscount | On 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. | |
status | Receives error status code. |
Implements BasicTimeZone.
virtual UBool 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.
date | the given UDate. | |
status | Output param filled in with success/error code. |
Implements TimeZone.
RuleBasedTimeZone& RuleBasedTimeZone::operator= | ( | const RuleBasedTimeZone & | right | ) |
virtual void RuleBasedTimeZone::setRawOffset | ( | int32_t | offsetMillis | ) | [virtual] |
virtual UBool RuleBasedTimeZone::useDaylightTime | ( | void | ) | const [virtual] |