ICU 56.1: simpletz.h Source File

ICU 56.1 56.1

- Main Page
- Related Pages
- Modules
- Namespaces
- Data Structures
- Files

- File List
- Globals

simpletz.h
Go to the documentation of this file.
1 /*
2 ********************************************************************************
3 * Copyright (C) 1997-2013, International Business Machines *
4 * Corporation and others. All Rights Reserved. *
5 ********************************************************************************
6 *
7 * File SIMPLETZ.H
8 *
9 * Modification History:
10 *
11 * Date Name Description
12 * 04/21/97 aliu Overhauled header.
13 * 08/10/98 stephen JDK 1.2 sync
14 * Added setStartRule() / setEndRule() overloads
15 * Added hasSameRules()
16 * 09/02/98 stephen Added getOffset(monthLen)
17 * Changed getOffset() to take UErrorCode
18 * 07/09/99 stephen Removed millisPerHour (unused, for HP compiler)
19 * 12/02/99 aliu Added TimeMode and constructor and setStart/EndRule
20 * methods that take TimeMode. Added to docs.
21 ********************************************************************************
22 */
23
24 #ifndef SIMPLETZ_H
25 #define SIMPLETZ_H
26
27 #include "unicode/utypes.h"
28
34 #if !UCONFIG_NO_FORMATTING
35
36 #include "unicode/basictz.h"
37
38 U_NAMESPACE_BEGIN
39
40 // forward declaration
41 class InitialTimeZoneRule;
42 class TimeZoneTransition;
43 class AnnualTimeZoneRule;
44
61 class U_I18N_API SimpleTimeZone: public BasicTimeZone {
62 public:
63
75 enum TimeMode {
76 WALL_TIME = 0,
77 STANDARD_TIME,
78 UTC_TIME
79 };
80
86 SimpleTimeZone(const SimpleTimeZone& source);
87
93 SimpleTimeZone& operator=(const SimpleTimeZone& right);
94
99 virtual ~SimpleTimeZone();
100
110 virtual UBool operator==(const TimeZone& that) const;
111
123 SimpleTimeZone(int32_t rawOffsetGMT, const UnicodeString& ID);
124
160 SimpleTimeZone(int32_t rawOffsetGMT, const UnicodeString& ID,
161 int8_t savingsStartMonth, int8_t savingsStartDayOfWeekInMonth,
162 int8_t savingsStartDayOfWeek, int32_t savingsStartTime,
163 int8_t savingsEndMonth, int8_t savingsEndDayOfWeekInMonth,
164 int8_t savingsEndDayOfWeek, int32_t savingsEndTime,
165 UErrorCode& status);
203 SimpleTimeZone(int32_t rawOffsetGMT, const UnicodeString& ID,
204 int8_t savingsStartMonth, int8_t savingsStartDayOfWeekInMonth,
205 int8_t savingsStartDayOfWeek, int32_t savingsStartTime,
206 int8_t savingsEndMonth, int8_t savingsEndDayOfWeekInMonth,
207 int8_t savingsEndDayOfWeek, int32_t savingsEndTime,
208 int32_t savingsDST, UErrorCode& status);
209
251 SimpleTimeZone(int32_t rawOffsetGMT, const UnicodeString& ID,
252 int8_t savingsStartMonth, int8_t savingsStartDayOfWeekInMonth,
253 int8_t savingsStartDayOfWeek, int32_t savingsStartTime,
254 TimeMode savingsStartTimeMode,
255 int8_t savingsEndMonth, int8_t savingsEndDayOfWeekInMonth,
256 int8_t savingsEndDayOfWeek, int32_t savingsEndTime, TimeMode savingsEndTimeMode,
257 int32_t savingsDST, UErrorCode& status);
258
267 void setStartYear(int32_t year);
268
311 void setStartRule(int32_t month, int32_t dayOfWeekInMonth, int32_t dayOfWeek,
312 int32_t time, UErrorCode& status);
357 void setStartRule(int32_t month, int32_t dayOfWeekInMonth, int32_t dayOfWeek,
358 int32_t time, TimeMode mode, UErrorCode& status);
359
371 void setStartRule(int32_t month, int32_t dayOfMonth, int32_t time,
372 UErrorCode& status);
386 void setStartRule(int32_t month, int32_t dayOfMonth, int32_t time,
387 TimeMode mode, UErrorCode& status);
388
405 void setStartRule(int32_t month, int32_t dayOfMonth, int32_t dayOfWeek,
406 int32_t time, UBool after, UErrorCode& status);
425 void setStartRule(int32_t month, int32_t dayOfMonth, int32_t dayOfWeek,
426 int32_t time, TimeMode mode, UBool after, UErrorCode& status);
427
450 void setEndRule(int32_t month, int32_t dayOfWeekInMonth, int32_t dayOfWeek,
451 int32_t time, UErrorCode& status);
452
477 void setEndRule(int32_t month, int32_t dayOfWeekInMonth, int32_t dayOfWeek,
478 int32_t time, TimeMode mode, UErrorCode& status);
479
491 void setEndRule(int32_t month, int32_t dayOfMonth, int32_t time, UErrorCode& status);
492
506 void setEndRule(int32_t month, int32_t dayOfMonth, int32_t time,
507 TimeMode mode, UErrorCode& status);
508
525 void setEndRule(int32_t month, int32_t dayOfMonth, int32_t dayOfWeek,
526 int32_t time, UBool after, UErrorCode& status);
527
546 void setEndRule(int32_t month, int32_t dayOfMonth, int32_t dayOfWeek,
547 int32_t time, TimeMode mode, UBool after, UErrorCode& status);
548
569 virtual int32_t getOffset(uint8_t era, int32_t year, int32_t month, int32_t day,
570 uint8_t dayOfWeek, int32_t millis, UErrorCode& status) const;
571
587 virtual int32_t getOffset(uint8_t era, int32_t year, int32_t month, int32_t day,
588 uint8_t dayOfWeek, int32_t milliseconds,
589 int32_t monthLength, UErrorCode& status) const;
606 virtual int32_t getOffset(uint8_t era, int32_t year, int32_t month, int32_t day,
607 uint8_t dayOfWeek, int32_t milliseconds,
608 int32_t monthLength, int32_t prevMonthLength,
609 UErrorCode& status) const;
610
616 virtual void getOffset(UDate date, UBool local, int32_t& rawOffset,
617 int32_t& dstOffset, UErrorCode& ec) const;
618
623 virtual void getOffsetFromLocal(UDate date, int32_t nonExistingTimeOpt, int32_t duplicatedTimeOpt,
624 int32_t& rawOffset, int32_t& dstOffset, UErrorCode& status) const;
625
633 virtual int32_t getRawOffset(void) const;
634
642 virtual void setRawOffset(int32_t offsetMillis);
643
652 void setDSTSavings(int32_t millisSavedDuringDST, UErrorCode& status);
653
661 virtual int32_t getDSTSavings(void) const;
662
669 virtual UBool useDaylightTime(void) const;
670
685 virtual UBool inDaylightTime(UDate date, UErrorCode& status) const;
686
693 UBool hasSameRules(const TimeZone& other) const;
694
702 virtual TimeZone* clone(void) const;
703
712 virtual UBool getNextTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const;
713
722 virtual UBool getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const;
723
732 virtual int32_t countTransitionRules(UErrorCode& status) const;
733
750 virtual void getTimeZoneRules(const InitialTimeZoneRule*& initial,
751 const TimeZoneRule* trsrules[], int32_t& trscount, UErrorCode& status) const;
752
753
754 public:
755
766 virtual UClassID getDynamicClassID(void) const;
767
779 static UClassID U_EXPORT2 getStaticClassID(void);
780
781 private:
785 enum EMode
786 {
787 DOM_MODE = 1,
788 DOW_IN_MONTH_MODE,
789 DOW_GE_DOM_MODE,
790 DOW_LE_DOM_MODE
791 };
792
793 SimpleTimeZone(); // default constructor not implemented
794
814 void construct(int32_t rawOffsetGMT,
815 int8_t startMonth, int8_t startDay, int8_t startDayOfWeek,
816 int32_t startTime, TimeMode startTimeMode,
817 int8_t endMonth, int8_t endDay, int8_t endDayOfWeek,
818 int32_t endTime, TimeMode endTimeMode,
819 int32_t dstSavings, UErrorCode& status);
820
830 static int32_t compareToRule(int8_t month, int8_t monthLen, int8_t prevMonthLen,
831 int8_t dayOfMonth,
832 int8_t dayOfWeek, int32_t millis, int32_t millisDelta,
833 EMode ruleMode, int8_t ruleMonth, int8_t ruleDayOfWeek,
834 int8_t ruleDay, int32_t ruleMillis);
835
851 void decodeRules(UErrorCode& status);
852 void decodeStartRule(UErrorCode& status);
853 void decodeEndRule(UErrorCode& status);
854
855 int8_t startMonth, startDay, startDayOfWeek; // the month, day, DOW, and time DST starts
856 int32_t startTime;
857 TimeMode startTimeMode, endTimeMode; // Mode for startTime, endTime; see TimeMode
858 int8_t endMonth, endDay, endDayOfWeek; // the month, day, DOW, and time DST ends
859 int32_t endTime;
860 int32_t startYear; // the year these DST rules took effect
861 int32_t rawOffset; // the TimeZone's raw GMT offset
862 UBool useDaylight; // flag indicating whether this TimeZone uses DST
863 static const int8_t STATICMONTHLENGTH[12]; // lengths of the months
864 EMode startMode, endMode; // flags indicating what kind of rules the DST rules are
865
870 int32_t dstSavings;
871
872 /* Private for BasicTimeZone implementation */
873 void checkTransitionRules(UErrorCode& status) const;
874 void initTransitionRules(UErrorCode& status);
875 void clearTransitionRules(void);
876 void deleteTransitionRules(void);
877 UBool transitionRulesInitialized;
878 InitialTimeZoneRule* initialRule;
879 TimeZoneTransition* firstTransition;
880 AnnualTimeZoneRule* stdRule;
881 AnnualTimeZoneRule* dstRule;
882 };
883
884 inline void SimpleTimeZone::setStartRule(int32_t month, int32_t dayOfWeekInMonth,
885 int32_t dayOfWeek,
886 int32_t time, UErrorCode& status) {
887 setStartRule(month, dayOfWeekInMonth, dayOfWeek, time, WALL_TIME, status);
888 }
889
890 inline void SimpleTimeZone::setStartRule(int32_t month, int32_t dayOfMonth,
891 int32_t time,
892 UErrorCode& status) {
893 setStartRule(month, dayOfMonth, time, WALL_TIME, status);
894 }
895
896 inline void SimpleTimeZone::setStartRule(int32_t month, int32_t dayOfMonth,
897 int32_t dayOfWeek,
898 int32_t time, UBool after, UErrorCode& status) {
899 setStartRule(month, dayOfMonth, dayOfWeek, time, WALL_TIME, after, status);
900 }
901
902 inline void SimpleTimeZone::setEndRule(int32_t month, int32_t dayOfWeekInMonth,
903 int32_t dayOfWeek,
904 int32_t time, UErrorCode& status) {
905 setEndRule(month, dayOfWeekInMonth, dayOfWeek, time, WALL_TIME, status);
906 }
907
908 inline void SimpleTimeZone::setEndRule(int32_t month, int32_t dayOfMonth,
909 int32_t time, UErrorCode& status) {
910 setEndRule(month, dayOfMonth, time, WALL_TIME, status);
911 }
912
913 inline void SimpleTimeZone::setEndRule(int32_t month, int32_t dayOfMonth, int32_t dayOfWeek,
914 int32_t time, UBool after, UErrorCode& status) {
915 setEndRule(month, dayOfMonth, dayOfWeek, time, WALL_TIME, after, status);
916 }
917
918 inline void
919 SimpleTimeZone::getOffset(UDate date, UBool local, int32_t& rawOffsetRef,
920 int32_t& dstOffsetRef, UErrorCode& ec) const {
921 TimeZone::getOffset(date, local, rawOffsetRef, dstOffsetRef, ec);
922 }
923
924 U_NAMESPACE_END
925
926 #endif /* #if !UCONFIG_NO_FORMATTING */
927
928 #endif // _SIMPLETZ
icu::TimeZone::useDaylightTime
virtual UBool useDaylightTime(void) const =0
Queries if this time zone uses daylight savings time.
icu::TimeZone::getDynamicClassID
virtual UClassID getDynamicClassID(void) const =0
Returns a unique class ID POLYMORPHICALLY.
icu::TimeZone::operator==
virtual UBool operator==(const TimeZone &that) const
Returns true if the two TimeZones are equal.
icu::TimeZone::inDaylightTime
virtual UBool inDaylightTime(UDate date, UErrorCode &status) const =0
Queries if the given date is in daylight savings time in this time zone.
icu::TimeZone::operator=
TimeZone & operator=(const TimeZone &right)
Default assignment operator.
icu::TimeZone::getOffset
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 loc...
icu::BasicTimeZone::getOffsetFromLocal
virtual 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.
UDate
double UDate
Date and Time data type.
Definition: utypes.h:201
UClassID
void * UClassID
UClassID is used to identify classes without using the compiler's RTTI.
Definition: uobject.h:91
icu::TimeZone::getStaticClassID
static UClassID getStaticClassID(void)
Return the class ID for this class.
icu::TimeZone
TimeZone represents a time zone offset, and also figures out daylight savings.
Definition: timezone.h:129
icu::TimeZone::clone
virtual TimeZone * clone(void) const =0
Clones TimeZone objects polymorphically.
basictz.h
C++ API: ICU TimeZone base class.
U_I18N_API
#define U_I18N_API
Set to export library symbols from inside the i18n library, and to import them from outside...
Definition: utypes.h:358
icu::TimeZoneRule
TimeZoneRule is a class representing a rule for time zone.
Definition: tzrule.h:32
icu::InitialTimeZoneRule
InitialTimeZoneRule represents a time zone rule representing a time zone effective from the beginning...
Definition: tzrule.h:198
icu::SimpleTimeZone::TimeMode
TimeMode
TimeMode is used, together with a millisecond offset after midnight, to specify a rule transition tim...
Definition: simpletz.h:75
U_NAMESPACE_BEGIN
#define U_NAMESPACE_BEGIN
This is used to begin a declaration of a public ICU C++ API.
Definition: uversion.h:129
icu::BasicTimeZone::getPreviousTransition
virtual UBool getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition &result) const =0
Gets the most recent time zone transition before the base time.
icu::TimeZone::hasSameRules
virtual UBool hasSameRules(const TimeZone &other) const
Returns true if this zone has the same rule and offset as another zone.
icu::TimeZone::getDSTSavings
virtual int32_t getDSTSavings() const
Returns the amount of time to be added to local standard time to get local wall clock time...
icu::TimeZoneTransition
TimeZoneTransition is a class representing a time zone transition.
Definition: tztrans.h:31
icu::BasicTimeZone::getNextTransition
virtual UBool getNextTransition(UDate base, UBool inclusive, TimeZoneTransition &result) const =0
Gets the first time zone transition after the base time.
icu::BasicTimeZone
BasicTimeZone is an abstract class extending TimeZone.
Definition: basictz.h:34
icu::BasicTimeZone::countTransitionRules
virtual int32_t countTransitionRules(UErrorCode &status) const =0
Returns the number of TimeZoneRules which represents time transitions, for this time zone...
icu::TimeZone::getRawOffset
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 ti...
icu::SimpleTimeZone
SimpleTimeZone is a concrete subclass of TimeZone that represents a time zone for use with a Gregoria...
Definition: simpletz.h:61
U_NAMESPACE_END
#define U_NAMESPACE_END
This is used to end a declaration of a public ICU C++ API.
Definition: uversion.h:130
icu::TimeZone::setRawOffset
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...
UErrorCode
UErrorCode
Error code to replace exception handling, so that the code is compatible with all C++ compilers...
Definition: utypes.h:476
utypes.h
Basic definitions for ICU, for both C and C++ APIs.
icu::BasicTimeZone::getTimeZoneRules
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 ti...
icu::UnicodeString
UnicodeString is a string class that stores Unicode characters directly and provides similar function...
Definition: unistr.h:293
UBool
int8_t UBool
The ICU boolean type.
Definition: umachine.h:234