# VTimeZone Class Reference

`VTimeZone` is a class implementing RFC2445 VTIMEZONE. More...

`#include <vtzone.h>`

Inheritance diagram for VTimeZone:

## Public Member Functions
| VTimeZone (const VTimeZone &source)
| Copy constructor.
virtual | ~VTimeZone ()
| Destructor.
VTimeZone & | operator= (const VTimeZone &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.
UBool | getTZURL (UnicodeString &url) const
| Gets the RFC2445 TZURL property value.
void | setTZURL (const UnicodeString &url)
| Sets the RFC2445 TZURL property value.
UBool | getLastModified (UDate &lastModified) const
| Gets the RFC2445 LAST-MODIFIED property value.
void | setLastModified (UDate lastModified)
| Sets the RFC2445 LAST-MODIFIED property value.
void | write (UnicodeString &result, UErrorCode &status) const
| Writes RFC2445 VTIMEZONE data for this time zone.
void | write (UDate start, UnicodeString &result, UErrorCode &status)
| Writes RFC2445 VTIMEZONE data for this time zone applicalbe for dates after the specified start time.
void | writeSimple (UDate time, UnicodeString &result, UErrorCode &status)
| Writes RFC2445 VTIMEZONE data applicalbe for the specified date.
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 UClassID | getDynamicClassID (void) const
| Returns a unique class ID POLYMORPHICALLY.
## Static Public Member Functions
static VTimeZone * | createVTimeZoneByID (const UnicodeString &ID)
| Create a `VTimeZone` instance by the time zone ID.
static VTimeZone * | createVTimeZone (const UnicodeString &vtzdata, UErrorCode &status)
| Create a `VTimeZone` instance by RFC2445 VTIMEZONE data.
static UClassID | getStaticClassID (void)
| Return the class ID for this class.

## Detailed Description

`VTimeZone` is a class implementing RFC2445 VTIMEZONE.

You can create a `VTimeZone` instance from a time zone ID supported by `TimeZone`. With the `VTimeZone` instance created from the ID, you can write out the rule in RFC2445 VTIMEZONE format. Also, you can create a `VTimeZone` instance from RFC2445 VTIMEZONE data stream, which allows you to calculate time zone offset by the rules defined by the data.
Note: The consumer of this class reading or writing VTIMEZONE data is responsible to decode or encode Non-ASCII text. Methods reading/writing VTIMEZONE data in this class do nothing with MIME encoding.

Stable:
  ICU 3.8

Definition at line 39 of file vtzone.h.

## Constructor & Destructor Documentation

VTimeZone::VTimeZone | ( | const VTimeZone & | source | ) |

Copy constructor.

Parameters:

  | source | The `VTimeZone` object to be copied.

Stable:
  ICU 3.8

virtual VTimeZone::~VTimeZone | ( |  | ) | `[virtual]`

Destructor.

Stable:
  ICU 3.8

## Member Function Documentation

virtual TimeZone* VTimeZone::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 TimeZone.

virtual int32_t VTimeZone::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.

Parameters:

  | status | Receives error status code.

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

Stable:
  ICU 3.8

Implements BasicTimeZone.

static VTimeZone* VTimeZone::createVTimeZone | ( | const UnicodeString & | vtzdata,
|  | UErrorCode & | status |
| ) |  |  | `[static]`

Create a `VTimeZone` instance by RFC2445 VTIMEZONE data.

Parameters:

  | vtzdata | The string including VTIMEZONE data block
  | status | Output param to filled in with a success or an error.

Returns:
  A `VTimeZone` initialized by the VTIMEZONE data or NULL if failed to load the rule from the VTIMEZONE data.

Stable:
  ICU 3.8

static VTimeZone* VTimeZone::createVTimeZoneByID | ( | const UnicodeString & | ID | ) | `[static]`

Create a `VTimeZone` instance by the time zone ID.

Parameters:

  | ID | The time zone ID, such as America/New_York

Returns:
  A `VTimeZone` object initialized by the time zone ID, or NULL when the ID is unknown.

Stable:
  ICU 3.8

virtual UClassID VTimeZone::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 TimeZone.

UBool VTimeZone::getLastModified | ( | UDate & | lastModified | ) | const

Gets the RFC2445 LAST-MODIFIED property value.

When a `VTimeZone` instance was created from VTIMEZONE data, the initial value is set by the LAST-MODIFIED property value in the data. Otherwise, the initial value is not set.

Parameters:

  | lastModified | Receives the last modified date.

Returns:
  TRUE if lastModified attribute is available and value is set.

Stable:
  ICU 3.8

virtual UBool VTimeZone::getNextTransition | ( | UDate | base,
|  | UBool | inclusive,
|  | TimeZoneTransition & | result |
| ) |  |  | `[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

Implements BasicTimeZone.

virtual void VTimeZone::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:

  | 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

Stable:
  ICU 3.8

Reimplemented from TimeZone.

virtual int32_t VTimeZone::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:

  | 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.

Returns:
  The offset in milliseconds to add to GMT to get local time.

Stable:
  ICU 3.8

Implements TimeZone.

virtual int32_t VTimeZone::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:

  | 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.

Returns:
  The offset in milliseconds to add to GMT to get local time.

Stable:
  ICU 3.8

Implements TimeZone.

virtual UBool VTimeZone::getPreviousTransition | ( | UDate | base,
|  | UBool | inclusive,
|  | TimeZoneTransition & | result |
| ) |  |  | `[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

Implements BasicTimeZone.

virtual int32_t VTimeZone::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 TimeZone.

static UClassID VTimeZone::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

Reimplemented from TimeZone.

virtual void VTimeZone::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.

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

Implements BasicTimeZone.

UBool VTimeZone::getTZURL | ( | UnicodeString & | url | ) | const

Gets the RFC2445 TZURL property value.

When a `VTimeZone` instance was created from VTIMEZONE data, the initial value is set by the TZURL property value in the data. Otherwise, the initial value is not set.

Parameters:

  | url | Receives the RFC2445 TZURL property value.

Returns:
  TRUE if TZURL attribute is available and value is set.

Stable:
  ICU 3.8

virtual UBool VTimeZone::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:

  | other | the `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 TimeZone.

virtual UBool VTimeZone::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:

  | date | the given UDate.
  | status | Output 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 TimeZone.

virtual UBool VTimeZone::operator!= | ( | const TimeZone & | that | ) | const`[virtual]`

Return true if the given `TimeZone` objects are semantically unequal.

Objects of different subclasses are considered unequal.

Parameters:

  | that | The object to be compared with.

Returns:
  true if the given `TimeZone` objects are semantically unequal.

Stable:
  ICU 3.8

Reimplemented from TimeZone.

VTimeZone& VTimeZone::operator= | ( | const VTimeZone & | right | ) |

Assignment operator.

Parameters:

  | right | The object to be copied.

Stable:
  ICU 3.8

virtual UBool VTimeZone::operator== | ( | const TimeZone & | that | ) | const`[virtual]`

Return true if the given `TimeZone` objects are semantically equal.

Objects of different subclasses are considered unequal.

Parameters:

  | that | The object to be compared with.

Returns:
  true if the given `TimeZone` objects are semantically equal.

Stable:
  ICU 3.8

Reimplemented from TimeZone.

void VTimeZone::setLastModified | ( | UDate | lastModified | ) |

Sets the RFC2445 LAST-MODIFIED property value.

Parameters:

  | lastModified | The LAST-MODIFIED date.

Stable:
  ICU 3.8

virtual void VTimeZone::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:

  | offsetMillis | The new raw GMT offset for this time zone.

Stable:
  ICU 3.8

Implements TimeZone.

void VTimeZone::setTZURL | ( | const UnicodeString & | url | ) |

Sets the RFC2445 TZURL property value.

Parameters:

  | url | The TZURL property value.

Stable:
  ICU 3.8

virtual UBool VTimeZone::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 TimeZone.

void VTimeZone::write | ( | UDate | start,
|  | UnicodeString & | result,
|  | UErrorCode & | status |
| ) |  |  |

Writes RFC2445 VTIMEZONE data for this time zone applicalbe for dates after the specified start time.

Parameters:

  | start | The start date.
  | result | Output param to filled in with the VTIMEZONE data.
  | status | Output param to filled in with a success or an error.

Stable:
  ICU 3.8

void VTimeZone::write | ( | UnicodeString & | result,
|  | UErrorCode & | status |
| ) |  |  | const

Writes RFC2445 VTIMEZONE data for this time zone.

Parameters:

  | result | Output param to filled in with the VTIMEZONE data.
  | status | Output param to filled in with a success or an error.

Stable:
  ICU 3.8

void VTimeZone::writeSimple | ( | UDate | time,
|  | UnicodeString & | result,
|  | UErrorCode & | status |
| ) |  |  |

Writes RFC2445 VTIMEZONE data applicalbe for the specified date.

Some common iCalendar implementations can only handle a single time zone property or a pair of standard and daylight time properties using BYDAY rule with day of week (such as BYDAY=1SUN). This method produce the VTIMEZONE data which can be handled these implementations. The rules produced by this method can be used only for calculating time zone offset around the specified date.

Parameters:

  | time | The date used for rule extraction.
  | result | Output param to filled in with the VTIMEZONE data.
  | status | Output param to filled in with a success or an error.

Stable:
  ICU 3.8

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

- vtzone.h