ICU 74.2 74.2

Public Types | Public Member Functions | Protected Member Functions | Static Protected Attributes
icu::BasicTimeZone Class Referenceabstract

`BasicTimeZone` is an abstract class extending `TimeZone`. More...

`#include <basictz.h>`

Inheritance diagram for icu::BasicTimeZone:

## Public Types
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...

## Public Member Functions
virtual | ~BasicTimeZone ()
| Destructor.
virtual BasicTimeZone * | clone () const override=0
| Clones this object polymorphically.
virtual UBool | getNextTransition (UDate base, UBool inclusive, TimeZoneTransition &result) const =0
| Gets the first time zone transition after the base time.
virtual UBool | getPreviousTransition (UDate base, UBool inclusive, TimeZoneTransition &result) const =0
| Gets the most recent time zone transition before the base time.
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.
virtual int32_t | countTransitionRules (UErrorCode &status) const =0
| 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) const =0
| Gets the `InitialTimeZoneRule` and the set of `TimeZoneRule` which represent time transitions for this time zone.
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.
virtual void | getOffsetFromLocal (UDate date, UTimeZoneLocalOption nonExistingTimeOpt, UTimeZoneLocalOption duplicatedTimeOpt, int32_t &rawOffset, int32_t &dstOffset, UErrorCode &status) const
| Get time zone offsets from local wall time.
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.
Public Member Functions inherited from icu::TimeZone
virtual | ~TimeZone ()
virtual bool | operator== (const TimeZone &that) const
| Returns true if the two TimeZones are equal.
bool | operator!= (const TimeZone &that) const
| Returns true if the two TimeZones are NOT equal; that is, if operator==() returns false.
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 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 milliseconds, int32_t monthLength, UErrorCode &status) const =0
| 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)=0
| 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 =0
| 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).
UnicodeString & | getID (UnicodeString &ID) const
| Fills in "ID" with the TimeZone's ID.
void | setID (const UnicodeString &ID)
| Sets the TimeZone's ID to the specified value.
UnicodeString & | getDisplayName (UnicodeString &result) const
| Returns a name of this time zone suitable for presentation to the user in the default locale.
UnicodeString & | getDisplayName (const Locale &locale, UnicodeString &result) const
| Returns a name of this time zone suitable for presentation to the user in the specified locale.
UnicodeString & | getDisplayName (UBool inDaylight, EDisplayType style, UnicodeString &result) const
| Returns a name of this time zone suitable for presentation to the user in the default locale.
UnicodeString & | getDisplayName (UBool inDaylight, 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.
virtual UBool | useDaylightTime (void) const =0
| Queries if this time zone uses daylight savings time.
virtual UBool | inDaylightTime (UDate date, UErrorCode &status) const =0
| 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 TimeZone * | clone () const =0
| Clones TimeZone objects polymorphically.
virtual UClassID | getDynamicClassID (void) const override=0
| Returns a unique class ID POLYMORPHICALLY.
virtual int32_t | getDSTSavings () const
| Returns the amount of time to be added to local standard time to get local wall clock time.
Public Member Functions inherited from icu::UObject
virtual | ~UObject ()
| Destructor.
virtual UClassID | getDynamicClassID () const
| ICU4C "poor man's RTTI", returns a UClassID for the actual ICU class.

## Protected Member Functions
| BasicTimeZone ()
| Default constructor.
| BasicTimeZone (const UnicodeString &id)
| Construct a timezone with a given ID.
| BasicTimeZone (const BasicTimeZone &source)
| Copy constructor.
BasicTimeZone & | operator= (const BasicTimeZone &)=default
| Copy assignment.
void | getTimeZoneRulesAfter (UDate start, InitialTimeZoneRule *&initial, UVector *&transitionRules, UErrorCode &status) const
| Gets the set of TimeZoneRule instances applicable to the specified time and after.
Protected Member Functions inherited from icu::TimeZone
| TimeZone ()
| Default constructor.
| TimeZone (const UnicodeString &id)
| Construct a TimeZone with a given ID.
| TimeZone (const TimeZone &source)
| Copy constructor.
TimeZone & | operator= (const TimeZone &right)
| Default assignment operator.

## Static Protected Attributes
static constexpr int32_t | kStdDstMask = kDaylight
| A time type option bit mask used by getOffsetFromLocal.
static constexpr int32_t | kFormerLatterMask = kLatter
| A time type option bit mask used by getOffsetFromLocal.

## Additional Inherited Members
Static Public Member Functions inherited from icu::TimeZone
static const TimeZone & | getUnknown ()
| Returns the "unknown" time zone.
static const TimeZone * | getGMT (void)
| The GMT (=UTC) time zone has a raw offset of zero and does not use daylight savings time.
static TimeZone * | createTimeZone (const UnicodeString &ID)
| Creates a `TimeZone` for the given ID.
static StringEnumeration * | createTimeZoneIDEnumeration (USystemTimeZoneType zoneType, const char *region, const int32_t *rawOffset, UErrorCode &ec)
| Returns an enumeration over system time zone IDs with the given filter conditions.
static StringEnumeration * | createEnumeration ()
| Returns an enumeration over all recognized time zone IDs.
static StringEnumeration * | createEnumeration (UErrorCode &status)
| Returns an enumeration over all recognized time zone IDs.
static StringEnumeration * | createEnumeration (int32_t rawOffset)
| Returns an enumeration over time zone IDs with a given raw offset from GMT.
static StringEnumeration * | createEnumerationForRawOffset (int32_t rawOffset, UErrorCode &status)
| Returns an enumeration over time zone IDs with a given raw offset from GMT.
static StringEnumeration * | createEnumeration (const char *region)
| Returns an enumeration over time zone IDs associated with the given region.
static StringEnumeration * | createEnumerationForRegion (const char *region, UErrorCode &status)
| Returns an enumeration over time zone IDs associated with the given region.
static int32_t | countEquivalentIDs (const UnicodeString &id)
| Returns the number of IDs in the equivalency group that includes the given ID.
static const UnicodeString | getEquivalentID (const UnicodeString &id, int32_t index)
| Returns an ID in the equivalency group that includes the given ID.
static TimeZone * | detectHostTimeZone ()
| Creates an instance of TimeZone detected from the current host system configuration.
static TimeZone * | createDefault (void)
| Creates a new copy of the default TimeZone for this host.
static TimeZone * | forLocaleOrDefault (const Locale &locale)
| If the locale contains the timezone keyword, creates a copy of that TimeZone.
static void | adoptDefault (TimeZone *zone)
| Sets the default time zone (i.e., what's returned by createDefault()) to be the specified time zone.
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.
static const char * | getTZDataVersion (UErrorCode &status)
| Returns the timezone data version currently used by ICU.
static UnicodeString & | getCanonicalID (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.
static UnicodeString & | getCanonicalID (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.
static UnicodeString & | getIanaID (const UnicodeString &id, UnicodeString &ianaID, UErrorCode &status)
| Returns the preferred time zone ID in the IANA time zone database for the given time zone ID.
static UnicodeString & | getWindowsID (const UnicodeString &id, UnicodeString &winid, UErrorCode &status)
| Converts a system time zone ID to an equivalent Windows time zone ID.
static UnicodeString & | getIDForWindowsID (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.
static UClassID | getStaticClassID (void)
| Return the class ID for this class.
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.
static const char16_t * | getRegion (const UnicodeString &id, UErrorCode &status)
| Returns the region code associated with the given zone, or nullptr if the zone is not known.
Static Protected Member Functions inherited from icu::TimeZone
static UResourceBundle * | loadRule (const UResourceBundle *top, const UnicodeString &ruleid, UResourceBundle *oldbundle, UErrorCode &status)
| Utility function.

## Detailed Description

`BasicTimeZone` is an abstract class extending `TimeZone`.

This class provides some additional methods to access time zone transitions and rules. All ICU `TimeZone` concrete subclasses extend this class.

Stable:
  ICU 3.8

Definition at line 38 of file basictz.h.

## Member Enumeration Documentation

## ◆ anonymous enum

anonymous enum

The time type option bit flags used by getOffsetFromLocal.

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

Definition at line 170 of file basictz.h.

## Constructor & Destructor Documentation

## ◆ ~BasicTimeZone()

virtual icu::BasicTimeZone::~BasicTimeZone | ( |  | ) |
| virtual

Destructor.

Stable:
  ICU 3.8

## ◆ BasicTimeZone() [1/3]

icu::BasicTimeZone::BasicTimeZone | ( |  | ) |
| protected

Default constructor.

Stable:
  ICU 3.8

## ◆ BasicTimeZone() [2/3]

icu::BasicTimeZone::BasicTimeZone | ( | const UnicodeString & | id | ) |
| protected

Construct a timezone with a given ID.

Parameters

  id | a system time zone ID

Stable:
  ICU 3.8

## ◆ BasicTimeZone() [3/3]

icu::BasicTimeZone::BasicTimeZone | ( | const BasicTimeZone & | source | ) |
| protected

Copy constructor.

Parameters

  source | the object to be copied.

Stable:
  ICU 3.8

## Member Function Documentation

## ◆ clone()

virtual BasicTimeZone * icu::BasicTimeZone::clone | ( |  | ) | const
| override pure virtual

Clones this object polymorphically.

The caller owns the result and should delete it when done.

Returns
  clone, or nullptr if an error occurred

Stable:
  ICU 3.8

Implements icu::TimeZone.

Implemented in icu::RuleBasedTimeZone, icu::SimpleTimeZone, and icu::VTimeZone.

## ◆ countTransitionRules()

virtual int32_t icu::BasicTimeZone::countTransitionRules | ( | UErrorCode & | status | ) | const
| pure 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.

Parameters

  status | Receives error status code.

Returns
  The number of `TimeZoneRule`s representing time transitions.

Stable:
  ICU 3.8

Implemented in icu::RuleBasedTimeZone, icu::SimpleTimeZone, and icu::VTimeZone.

## ◆ getNextTransition()

virtual UBool icu::BasicTimeZone::getNextTransition | ( | UDate | base,
|  | UBool | inclusive,
|  | TimeZoneTransition & | result
| ) |  | const
| pure virtual

Gets the first time zone transition after the base time.

Parameters

  base | The base time.
  inclusive | Whether the base time is inclusive or not.
  result | Receives the first transition after the base time.

Returns
  true if the transition is found.

Stable:
  ICU 3.8

Implemented in icu::RuleBasedTimeZone, icu::SimpleTimeZone, and icu::VTimeZone.

## ◆ getOffsetFromLocal() [1/2]

void icu::BasicTimeZone::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.

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

## ◆ getOffsetFromLocal() [2/2]

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

Get time zone offsets from local wall time.

Stable:
  ICU 69

Reimplemented in icu::RuleBasedTimeZone, icu::SimpleTimeZone, and icu::VTimeZone.

## ◆ getPreviousTransition()

virtual UBool icu::BasicTimeZone::getPreviousTransition | ( | UDate | base,
|  | UBool | inclusive,
|  | TimeZoneTransition & | result
| ) |  | const
| pure virtual

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

Parameters

  base | The base time.
  inclusive | Whether the base time is inclusive or not.
  result | Receives the most recent transition before the base time.

Returns
  true if the transition is found.

Stable:
  ICU 3.8

Implemented in icu::RuleBasedTimeZone, icu::SimpleTimeZone, and icu::VTimeZone.

## ◆ getSimpleRulesNear()

virtual void icu::BasicTimeZone::getSimpleRulesNear | ( | UDate | date,
|  | InitialTimeZoneRule *& | initial,
|  | AnnualTimeZoneRule *& | std,
|  | AnnualTimeZoneRule *& | dst,
|  | UErrorCode & | status
| ) |  | const
| virtual

Gets the set of time zone rules valid at the specified time.

Some known external time zone implementations are not capable to handle historic time zone rule changes. Also some implementations can only handle certain type of rule definitions. If this time zone does not use any daylight saving time within about 1 year from the specified time, only the `InitialTimeZone` is returned. Otherwise, the rule for standard time and daylight saving time transitions are returned in addition to the `InitialTimeZoneRule`. The standard and daylight saving time transition rules are represented by `AnnualTimeZoneRule` with `DateTimeRule::DOW` for its date rule and `DateTimeRule::WALL_TIME` for its time rule. Because daylight saving time rule is changing time to time in many time zones and also mapping a transition time rule to different type is lossy transformation, the set of rules returned by this method may be valid for short period of time. The time zone rule objects returned by this method is owned by the caller, so the caller is responsible for deleting them after use.

Parameters

  date | The date used for extracting time zone rules.
  initial | Receives the `InitialTimeZone`, always not nullptr.
  std | Receives the `AnnualTimeZoneRule` for standard time transitions. When this time time zone does not observe daylight saving times around the specified date, nullptr is set.
  dst | Receives the `AnnualTimeZoneRule` for daylight saving time transitions. When this time zone does not observer daylight saving times around the specified date, nullptr is set.
  status | Receives error status code.

Stable:
  ICU 3.8

## ◆ getTimeZoneRules()

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

  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.

Stable:
  ICU 3.8

Implemented in icu::RuleBasedTimeZone, icu::SimpleTimeZone, and icu::VTimeZone.

## ◆ getTimeZoneRulesAfter()

void icu::BasicTimeZone::getTimeZoneRulesAfter | ( | UDate | start,
|  | InitialTimeZoneRule *& | initial,
|  | UVector *& | transitionRules,
|  | UErrorCode & | status
| ) |  | const
| protected

Gets the set of TimeZoneRule instances applicable to the specified time and after.

Parameters

  start | The start date used for extracting time zone rules
  initial | Output parameter, receives the InitialTimeZone. Always not nullptr (except in case of error)
  transitionRules | Output parameter, a UVector of transition rules. May be nullptr, if there are no transition rules. The caller owns the returned vector; the UVector owns the rules.
  status | Receives error status code

## ◆ hasEquivalentTransitions()

virtual UBool icu::BasicTimeZone::hasEquivalentTransitions | ( | const BasicTimeZone & | tz,
|  | UDate | start,
|  | UDate | end,
|  | UBool | ignoreDstAmount,
|  | UErrorCode & | ec
| ) |  | const
| virtual

Checks if the time zone has equivalent transitions in the time range.

This method returns true when all of transition times, from/to standard offsets and DST savings used by this time zone match the other in the time range.

Parameters

  tz | The `BasicTimeZone` object to be compared with.
  start | The start time of the evaluated time range (inclusive)
  end | The end time of the evaluated time range (inclusive)
  ignoreDstAmount | When true, any transitions with only daylight saving amount changes will be ignored, except either of them is zero. For example, a transition from rawoffset 3:00/dstsavings 1:00 to rawoffset 2:00/dstsavings 2:00 is excluded from the comparison, but a transition from rawoffset 2:00/dstsavings 1:00 to rawoffset 3:00/dstsavings 0:00 is included.
  ec | Output param to filled in with a success or an error.

Returns
  true if the other time zone has the equivalent transitions in the time range.

Stable:
  ICU 3.8

## ◆ operator=()

BasicTimeZone & icu::BasicTimeZone::operator= | ( | const BasicTimeZone & |  | ) |
| protected default

Copy assignment.

Stable:
  ICU 3.8

## Field Documentation

## ◆ kFormerLatterMask

constexpr int32_t icu::BasicTimeZone::kFormerLatterMask = kLatter
| static constexpr protected

A time type option bit mask used by getOffsetFromLocal.

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

Definition at line 197 of file basictz.h.

## ◆ kStdDstMask

constexpr int32_t icu::BasicTimeZone::kStdDstMask = kDaylight
| static constexpr protected

A time type option bit mask used by getOffsetFromLocal.

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

Definition at line 192 of file basictz.h.

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

- i18n/unicode/basictz.h