# AnnualTimeZoneRule Class Reference

`AnnualTimeZoneRule` is a class used for representing a time zone rule which takes effect annually. More...

`#include <tzrule.h>`

Inheritance diagram for AnnualTimeZoneRule:

## Public Member Functions
| AnnualTimeZoneRule (const UnicodeString &name, int32_t rawOffset, int32_t dstSavings, const DateTimeRule &dateTimeRule, int32_t startYear, int32_t endYear)
| Constructs a `AnnualTimeZoneRule` with the name, the GMT offset of its standard time, the amount of daylight saving offset adjustment, the annual start time rule and the start/until years.
| AnnualTimeZoneRule (const UnicodeString &name, int32_t rawOffset, int32_t dstSavings, DateTimeRule *dateTimeRule, int32_t startYear, int32_t endYear)
| Constructs a `AnnualTimeZoneRule` with the name, the GMT offset of its standard time, the amount of daylight saving offset adjustment, the annual start time rule and the start/until years.
| AnnualTimeZoneRule (const AnnualTimeZoneRule &source)
| Copy constructor.
virtual | ~AnnualTimeZoneRule ()
| Destructor.
virtual AnnualTimeZoneRule * | clone (void) const
| Clone this AnnualTimeZoneRule object polymorphically.
AnnualTimeZoneRule & | operator= (const AnnualTimeZoneRule &right)
| Assignment operator.
virtual UBool | operator== (const TimeZoneRule &that) const
| Return true if the given `TimeZoneRule` objects are semantically equal.
virtual UBool | operator!= (const TimeZoneRule &that) const
| Return true if the given `TimeZoneRule` objects are semantically unequal.
const DateTimeRule * | getRule (void) const
| Gets the start date/time rule used by this rule.
int32_t | getStartYear (void) const
| Gets the first year when this rule takes effect.
int32_t | getEndYear (void) const
| Gets the end year when this rule takes effect.
UBool | getStartInYear (int32_t year, int32_t prevRawOffset, int32_t prevDSTSavings, UDate &result) const
| Gets the time when this rule takes effect in the given year.
virtual UBool | isEquivalentTo (const TimeZoneRule &that) const
| Returns if this rule represents the same rule and offsets as another.
virtual UBool | getFirstStart (int32_t prevRawOffset, int32_t prevDSTSavings, UDate &result) const
| Gets the very first time when this rule takes effect.
virtual UBool | getFinalStart (int32_t prevRawOffset, int32_t prevDSTSavings, UDate &result) const
| Gets the final time when this rule takes effect.
virtual UBool | getNextStart (UDate base, int32_t prevRawOffset, int32_t prevDSTSavings, UBool inclusive, UDate &result) const
| Gets the first time when this rule takes effect after the specified time.
virtual UBool | getPreviousStart (UDate base, int32_t prevRawOffset, int32_t prevDSTSavings, UBool inclusive, UDate &result) const
| Gets the most recent time when this rule takes effect before the specified 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.
## Static Public Attributes
static const int32_t | MAX_YEAR
| The constant representing the maximum year used for designating a rule is permanent.

## Detailed Description

`AnnualTimeZoneRule` is a class used for representing a time zone rule which takes effect annually.

The calenday system used for the rule is is based on Gregorian calendar

Stable:
  ICU 3.8

Definition at line 376 of file tzrule.h.

## Constructor & Destructor Documentation

AnnualTimeZoneRule::AnnualTimeZoneRule | ( | const UnicodeString & | name,
|  | int32_t | rawOffset,
|  | int32_t | dstSavings,
|  | const DateTimeRule & | dateTimeRule,
|  | int32_t | startYear,
|  | int32_t | endYear |
| ) |  |  |

Constructs a `AnnualTimeZoneRule` with the name, the GMT offset of its standard time, the amount of daylight saving offset adjustment, the annual start time rule and the start/until years.

The input DateTimeRule is copied by this constructor, so the caller remains responsible for deleting the object.

Parameters:

  | name | The time zone name.
  | rawOffset | The GMT offset of its standard time in milliseconds.
  | dstSavings | The amount of daylight saving offset adjustment in milliseconds. If this ia a rule for standard time, the value of this argument is 0.
  | dateTimeRule | The start date/time rule repeated annually.
  | startYear | The first year when this rule takes effect.
  | endYear | The last year when this rule takes effect. If this rule is effective forever in future, specify MAX_YEAR.

Stable:
  ICU 3.8

AnnualTimeZoneRule::AnnualTimeZoneRule | ( | const UnicodeString & | name,
|  | int32_t | rawOffset,
|  | int32_t | dstSavings,
|  | DateTimeRule * | dateTimeRule,
|  | int32_t | startYear,
|  | int32_t | endYear |
| ) |  |  |

Constructs a `AnnualTimeZoneRule` with the name, the GMT offset of its standard time, the amount of daylight saving offset adjustment, the annual start time rule and the start/until years.

The input DateTimeRule object is adopted by this object, therefore, the caller must not delete the object.

Parameters:

  | name | The time zone name.
  | rawOffset | The GMT offset of its standard time in milliseconds.
  | dstSavings | The amount of daylight saving offset adjustment in milliseconds. If this ia a rule for standard time, the value of this argument is 0.
  | dateTimeRule | The start date/time rule repeated annually.
  | startYear | The first year when this rule takes effect.
  | endYear | The last year when this rule takes effect. If this rule is effective forever in future, specify MAX_YEAR.

Stable:
  ICU 3.8

AnnualTimeZoneRule::AnnualTimeZoneRule | ( | const AnnualTimeZoneRule & | source | ) |

Copy constructor.

Parameters:

  | source | The AnnualTimeZoneRule object to be copied.

Stable:
  ICU 3.8

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

Destructor.

Stable:
  ICU 3.8

## Member Function Documentation

virtual AnnualTimeZoneRule* AnnualTimeZoneRule::clone | ( | void |  | ) | const`[virtual]`

Clone this AnnualTimeZoneRule object polymorphically.

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

Returns:
  A copy of the object.

Stable:
  ICU 3.8

Implements TimeZoneRule.

virtual UClassID AnnualTimeZoneRule::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 UObject.

int32_t AnnualTimeZoneRule::getEndYear | ( | void |  | ) | const

Gets the end year when this rule takes effect.

Returns:
  The end year of this rule (inclusive). The year is in Gregorian calendar with 0 == 1 BCE, -1 == 2 BCE, etc.

Stable:
  ICU 3.8

virtual UBool AnnualTimeZoneRule::getFinalStart | ( | int32_t | prevRawOffset,
|  | int32_t | prevDSTSavings,
|  | UDate & | result |
| ) |  |  | const`[virtual]`

Gets the final time when this rule takes effect.

Parameters:

  | prevRawOffset | The standard time offset from UTC before this rule takes effect in milliseconds.
  | prevDSTSavings | The amount of daylight saving offset from the standard time.
  | result | Receives the final time when this rule takes effect.

Returns:
  true if the start time is available. When false is returned, output parameter "result" is unchanged.

Stable:
  ICU 3.8

Implements TimeZoneRule.

virtual UBool AnnualTimeZoneRule::getFirstStart | ( | int32_t | prevRawOffset,
|  | int32_t | prevDSTSavings,
|  | UDate & | result |
| ) |  |  | const`[virtual]`

Gets the very first time when this rule takes effect.

Parameters:

  | prevRawOffset | The standard time offset from UTC before this rule takes effect in milliseconds.
  | prevDSTSavings | The amount of daylight saving offset from the standard time.
  | result | Receives the very first time when this rule takes effect.

Returns:
  true if the start time is available. When false is returned, output parameter "result" is unchanged.

Stable:
  ICU 3.8

Implements TimeZoneRule.

virtual UBool AnnualTimeZoneRule::getNextStart | ( | UDate | base,
|  | int32_t | prevRawOffset,
|  | int32_t | prevDSTSavings,
|  | UBool | inclusive,
|  | UDate & | result |
| ) |  |  | const`[virtual]`

Gets the first time when this rule takes effect after the specified time.

Parameters:

  | base | The first start time after this base time will be returned.
  | prevRawOffset | The standard time offset from UTC before this rule takes effect in milliseconds.
  | prevDSTSavings | The amount of daylight saving offset from the standard time.
  | inclusive | Whether the base time is inclusive or not.
  | result | Receives The first time when this rule takes effect after the specified base time.

Returns:
  true if the start time is available. When false is returned, output parameter "result" is unchanged.

Stable:
  ICU 3.8

Implements TimeZoneRule.

virtual UBool AnnualTimeZoneRule::getPreviousStart | ( | UDate | base,
|  | int32_t | prevRawOffset,
|  | int32_t | prevDSTSavings,
|  | UBool | inclusive,
|  | UDate & | result |
| ) |  |  | const`[virtual]`

Gets the most recent time when this rule takes effect before the specified time.

Parameters:

  | base | The most recent time before this base time will be returned.
  | prevRawOffset | The standard time offset from UTC before this rule takes effect in milliseconds.
  | prevDSTSavings | The amount of daylight saving offset from the standard time.
  | inclusive | Whether the base time is inclusive or not.
  | result | Receives The most recent time when this rule takes effect before the specified base time.

Returns:
  true if the start time is available. When false is returned, output parameter "result" is unchanged.

Stable:
  ICU 3.8

Implements TimeZoneRule.

const DateTimeRule* AnnualTimeZoneRule::getRule | ( | void |  | ) | const

Gets the start date/time rule used by this rule.

Returns:
  The `AnnualDateTimeRule` which represents the start date/time rule used by this time zone rule.

Stable:
  ICU 3.8

UBool AnnualTimeZoneRule::getStartInYear | ( | int32_t | year,
|  | int32_t | prevRawOffset,
|  | int32_t | prevDSTSavings,
|  | UDate & | result |
| ) |  |  | const

Gets the time when this rule takes effect in the given year.

Parameters:

  | year | The Gregorian year, with 0 == 1 BCE, -1 == 2 BCE, etc.
  | prevRawOffset | The standard time offset from UTC before this rule takes effect in milliseconds.
  | prevDSTSavings | The amount of daylight saving offset from the standard time.
  | result | Receives the start time in the year.

Returns:
  true if this rule takes effect in the year and the result is set to "result".

Stable:
  ICU 3.8

int32_t AnnualTimeZoneRule::getStartYear | ( | void |  | ) | const

Gets the first year when this rule takes effect.

Returns:
  The start year of this rule. The year is in Gregorian calendar with 0 == 1 BCE, -1 == 2 BCE, etc.

Stable:
  ICU 3.8

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

virtual UBool AnnualTimeZoneRule::isEquivalentTo | ( | const TimeZoneRule & | that | ) | const`[virtual]`

Returns if this rule represents the same rule and offsets as another.

When two `TimeZoneRule` objects differ only its names, this method returns true.

Parameters:

  | that | The `TimeZoneRule` object to be compared with.

Returns:
  true if the other `TimeZoneRule` is equivalent to this one.

Stable:
  ICU 3.8

Reimplemented from TimeZoneRule.

virtual UBool AnnualTimeZoneRule::operator!= | ( | const TimeZoneRule & | that | ) | const`[virtual]`

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

Objects of different subclasses are considered unequal.

Parameters:

  | that | The object to be compared with.

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

Stable:
  ICU 3.8

Reimplemented from TimeZoneRule.

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

Assignment operator.

Parameters:

  | right | The object to be copied.

Stable:
  ICU 3.8

virtual UBool AnnualTimeZoneRule::operator== | ( | const TimeZoneRule & | that | ) | const`[virtual]`

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

Objects of different subclasses are considered unequal.

Parameters:

  | that | The object to be compared with.

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

Stable:
  ICU 3.8

Reimplemented from TimeZoneRule.

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

- tzrule.h