ICU 69.1 69.1
tzrule.h
Go to the documentation of this file.
1// © 2016 and later: Unicode, Inc. and others.
2// License & terms of use: http://www.unicode.org/copyright.html
3/*
4*******************************************************************************
5* Copyright (C) 2007-2008, International Business Machines Corporation and *
6* others. All Rights Reserved. *
7*******************************************************************************
8*/
9#ifndef TZRULE_H
10#define TZRULE_H
11
17#include "unicode/utypes.h"
18
19#if U_SHOW_CPLUSPLUS_API
20
21#if !UCONFIG_NO_FORMATTING
22
23#include "unicode/uobject.h"
24#include "unicode/unistr.h"
25#include "unicode/dtrule.h"
26
27U_NAMESPACE_BEGIN
28
37public:
42 virtual ~TimeZoneRule();
43
50 virtual TimeZoneRule* clone() const = 0;
51
59 virtual UBool operator==(const TimeZoneRule& that) const;
60
68 virtual UBool operator!=(const TimeZoneRule& that) const;
69
77
83 int32_t getRawOffset(void) const;
84
92
101 virtual UBool isEquivalentTo(const TimeZoneRule& other) const;
102
115
128
144 UBool inclusive, UDate& result) const = 0;
145
161 UBool inclusive, UDate& result) const = 0;
162
163protected:
164
174 TimeZoneRule(const UnicodeString& name, int32_t rawOffset, int32_t dstSavings);
175
182
189
190private:
191 UnicodeString fName; // time name
192 int32_t fRawOffset; // UTC offset of the standard time in milliseconds
193 int32_t fDSTSavings; // DST saving amount in milliseconds
194};
195
372
381public:
386 static const int32_t MAX_YEAR;
387
404 AnnualTimeZoneRule(const UnicodeString& name, int32_t rawOffset, int32_t dstSavings,
405 const DateTimeRule& dateTimeRule, int32_t startYear, int32_t endYear);
406
423 AnnualTimeZoneRule(const UnicodeString& name, int32_t rawOffset, int32_t dstSavings,
425
432
438
445 virtual AnnualTimeZoneRule* clone() const;
446
453
461 virtual UBool operator==(const TimeZoneRule& that) const;
462
470 virtual UBool operator!=(const TimeZoneRule& that) const;
471
478 const DateTimeRule* getRule(void) const;
479
487
494 int32_t getEndYear(void) const;
495
509
518 virtual UBool isEquivalentTo(const TimeZoneRule& that) const;
519
532
545
561 UBool inclusive, UDate& result) const;
562
578 UBool inclusive, UDate& result) const;
579
580
581private:
582 DateTimeRule* fDateTimeRule;
583 int32_t fStartYear;
584 int32_t fEndYear;
585
586public:
599
611 virtual UClassID getDynamicClassID(void) const;
612};
613
621public:
639 TimeArrayTimeZoneRule(const UnicodeString& name, int32_t rawOffset, int32_t dstSavings,
641
648
654
661 virtual TimeArrayTimeZoneRule* clone() const;
662
669
677 virtual UBool operator==(const TimeZoneRule& that) const;
678
686 virtual UBool operator!=(const TimeZoneRule& that) const;
687
697
708
715
724 virtual UBool isEquivalentTo(const TimeZoneRule& that) const;
725
738
751
767 UBool inclusive, UDate& result) const;
768
784 UBool inclusive, UDate& result) const;
785
786
787private:
788 enum { TIMEARRAY_STACK_BUFFER_SIZE = 32 };
789 UBool initStartTimes(const UDate source[], int32_t size, UErrorCode& ec);
790 UDate getUTC(UDate time, int32_t raw, int32_t dst) const;
791
792 DateTimeRule::TimeRuleType fTimeRuleType;
793 int32_t fNumStartTimes;
794 UDate* fStartTimes;
795 UDate fLocalStartTimes[TIMEARRAY_STACK_BUFFER_SIZE];
796
797public:
810
822 virtual UClassID getDynamicClassID(void) const;
823};
824
825
827
828#endif /* #if !UCONFIG_NO_FORMATTING */
829
830#endif /* U_SHOW_CPLUSPLUS_API */
831
832#endif // TZRULE_H
833
834//eof
AnnualTimeZoneRule is a class used for representing a time zone rule which takes effect annually.
Definition tzrule.h:380
virtual UBool operator==(const TimeZoneRule &that) const
Return true if the given TimeZoneRule objects are semantically equal.
virtual ~AnnualTimeZoneRule()
Destructor.
virtual UClassID getDynamicClassID(void) const
Returns a unique class ID POLYMORPHICALLY.
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,...
static const int32_t MAX_YEAR
The constant representing the maximum year used for designating a rule is permanent.
Definition tzrule.h:386
AnnualTimeZoneRule & operator=(const AnnualTimeZoneRule &right)
Assignment operator.
virtual UBool operator!=(const TimeZoneRule &that) const
Return true if the given TimeZoneRule objects are semantically unequal.
virtual AnnualTimeZoneRule * clone() const
Clone this AnnualTimeZoneRule object polymorphically.
virtual UBool isEquivalentTo(const TimeZoneRule &that) const
Returns if this rule represents the same rule and offsets as another.
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.
const DateTimeRule * getRule(void) const
Gets the start date/time rule used by this rule.
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,...
virtual UBool getFirstStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate &result) const
Gets the very first time when this rule takes effect.
int32_t getEndYear(void) const
Gets the end year when this rule takes effect.
int32_t getStartYear(void) const
Gets the first year when this rule takes effect.
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.
static UClassID getStaticClassID(void)
Return the class ID for this class.
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.
AnnualTimeZoneRule(const AnnualTimeZoneRule &source)
Copy constructor.
DateTimeRule is a class representing a time in a year by a rule specified by month,...
Definition dtrule.h:33
TimeRuleType
Time rule type constants.
Definition dtrule.h:55
InitialTimeZoneRule represents a time zone rule representing a time zone effective from the beginning...
Definition tzrule.h:202
InitialTimeZoneRule(const UnicodeString &name, int32_t rawOffset, int32_t dstSavings)
Constructs an InitialTimeZoneRule with the name, the GMT offset of its standard time and the amount o...
static UClassID getStaticClassID(void)
Return the class ID for this class.
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 InitialTimeZoneRule * clone() const
Clone this InitialTimeZoneRule object polymorphically.
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 operator!=(const TimeZoneRule &that) const
Return true if the given TimeZoneRule objects are semantically unequal.
virtual UBool isEquivalentTo(const TimeZoneRule &that) const
Returns if this rule represents the same rule and offsets as another.
virtual UBool getFinalStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate &result) const
Gets the final time when this rule takes effect.
InitialTimeZoneRule & operator=(const InitialTimeZoneRule &right)
Assignment operator.
InitialTimeZoneRule(const InitialTimeZoneRule &source)
Copy constructor.
virtual UBool getFirstStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate &result) const
Gets the very first time when this rule takes effect.
virtual ~InitialTimeZoneRule()
Destructor.
virtual UBool operator==(const TimeZoneRule &that) const
Return true if the given TimeZoneRule objects are semantically equal.
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.
"Smart pointer" base class; do not use directly: use LocalPointer etc.
TimeArrayTimeZoneRule represents a time zone rule whose start times are defined by an array of millis...
Definition tzrule.h:620
virtual ~TimeArrayTimeZoneRule()
Destructor.
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 UBool operator==(const TimeZoneRule &that) const
Return true if the given TimeZoneRule objects are semantically equal.
DateTimeRule::TimeRuleType getTimeType(void) const
Gets the time type of the start times used by this rule.
TimeArrayTimeZoneRule(const UnicodeString &name, int32_t rawOffset, int32_t dstSavings, const UDate *startTimes, int32_t numStartTimes, DateTimeRule::TimeRuleType timeRuleType)
Constructs a TimeArrayTimeZoneRule with the name, the GMT offset of its standard time,...
virtual UBool getFinalStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate &result) const
Gets the final time when this rule takes effect.
UBool getStartTimeAt(int32_t index, UDate &result) const
Gets a start time at the index stored in this rule.
virtual TimeArrayTimeZoneRule * clone() const
Clone this TimeArrayTimeZoneRule object polymorphically.
virtual UBool isEquivalentTo(const TimeZoneRule &that) const
Returns if this rule represents the same rule and offsets as another.
static UClassID getStaticClassID(void)
Return the class ID for this class.
virtual UBool getFirstStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate &result) const
Gets the very first time when this rule takes effect.
virtual UBool operator!=(const TimeZoneRule &that) const
Return true if the given TimeZoneRule objects are semantically unequal.
TimeArrayTimeZoneRule & operator=(const TimeArrayTimeZoneRule &right)
Assignment operator.
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.
TimeArrayTimeZoneRule(const TimeArrayTimeZoneRule &source)
Copy constructor.
int32_t countStartTimes(void) const
Returns the number of start times stored in this rule.
virtual UClassID getDynamicClassID(void) const
Returns a unique class ID POLYMORPHICALLY.
TimeZoneRule is a class representing a rule for time zone.
Definition tzrule.h:36
virtual UBool getFirstStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate &result) const =0
Gets the very first time when this rule takes effect.
TimeZoneRule(const UnicodeString &name, int32_t rawOffset, int32_t dstSavings)
Constructs a TimeZoneRule with the name, the GMT offset of its standard time and the amount of daylig...
virtual UBool getNextStart(UDate base, int32_t prevRawOffset, int32_t prevDSTSavings, UBool inclusive, UDate &result) const =0
Gets the first time when this rule takes effect after the specified time.
virtual UBool operator==(const TimeZoneRule &that) const
Return true if the given TimeZoneRule objects are semantically equal.
int32_t getRawOffset(void) const
Gets the standard time offset.
virtual ~TimeZoneRule()
Destructor.
virtual UBool isEquivalentTo(const TimeZoneRule &other) const
Returns if this rule represents the same rule and offsets as another.
virtual UBool getPreviousStart(UDate base, int32_t prevRawOffset, int32_t prevDSTSavings, UBool inclusive, UDate &result) const =0
Gets the most recent time when this rule takes effect before the specified time.
int32_t getDSTSavings(void) const
Gets the amount of daylight saving delta time from the standard time.
TimeZoneRule & operator=(const TimeZoneRule &right)
Assignment operator.
virtual UBool getFinalStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate &result) const =0
Gets the final time when this rule takes effect.
TimeZoneRule(const TimeZoneRule &source)
Copy constructor.
UnicodeString & getName(UnicodeString &name) const
Fills in "name" with the name of this time zone.
virtual TimeZoneRule * clone() const =0
Clone this TimeZoneRule object polymorphically.
virtual UBool operator!=(const TimeZoneRule &that) const
Return true if the given TimeZoneRule objects are semantically unequal.
UObject is the common ICU "boilerplate" class.
Definition uobject.h:223
UnicodeString is a string class that stores Unicode characters directly and provides similar function...
Definition unistr.h:296
C++ API: Rule for specifying date and time in an year.
int8_t UBool
The ICU boolean type, a signed-byte integer.
Definition umachine.h:269
C++ API: Unicode String.
C++ API: Common ICU base class UObject.
void * UClassID
UClassID is used to identify classes without using the compiler's RTTI.
Definition uobject.h:96
Basic definitions for ICU, for both C and C++ APIs.
UErrorCode
Standard ICU4C error code type, a substitute for exceptions.
Definition utypes.h:415
#define U_I18N_API
Set to export library symbols from inside the i18n library, and to import them from outside.
Definition utypes.h:301
double UDate
Date and Time data type.
Definition utypes.h:203