ICU 63.1 63.1

vtzone.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-2013, International Business Machines Corporation and
6 * others. All Rights Reserved.
7 *******************************************************************************
8 */
9 #ifndef VTZONE_H
10 #define VTZONE_H
11
12 #include "unicode/utypes.h"
13
19 #if !UCONFIG_NO_FORMATTING
20
21 #include "unicode/basictz.h"
22
23 U_NAMESPACE_BEGIN
24
25 class VTZWriter;
26 class VTZReader;
27 class UVector;
28
43 class U_I18N_API VTimeZone : public BasicTimeZone {
44 public:
50 VTimeZone(const VTimeZone& source);
51
56 virtual ~VTimeZone();
57
63 VTimeZone& operator=(const VTimeZone& right);
64
73 virtual UBool operator==(const TimeZone& that) const;
74
83 virtual UBool operator!=(const TimeZone& that) const;
84
92 static VTimeZone* createVTimeZoneByID(const UnicodeString& ID);
93
101 static VTimeZone* createVTimeZoneFromBasicTimeZone(const BasicTimeZone& basicTZ,
102 UErrorCode &status);
103
113 static VTimeZone* createVTimeZone(const UnicodeString& vtzdata, UErrorCode& status);
114
123 UBool getTZURL(UnicodeString& url) const;
124
130 void setTZURL(const UnicodeString& url);
131
140 UBool getLastModified(UDate& lastModified) const;
141
147 void setLastModified(UDate lastModified);
148
155 void write(UnicodeString& result, UErrorCode& status) const;
156
165 void write(UDate start, UnicodeString& result, UErrorCode& status) const;
166
180 void writeSimple(UDate time, UnicodeString& result, UErrorCode& status) const;
181
188 virtual TimeZone* clone(void) const;
189
214 virtual int32_t getOffset(uint8_t era, int32_t year, int32_t month, int32_t day,
215 uint8_t dayOfWeek, int32_t millis, UErrorCode& status) const;
216
236 virtual int32_t getOffset(uint8_t era, int32_t year, int32_t month, int32_t day,
237 uint8_t dayOfWeek, int32_t millis,
238 int32_t monthLength, UErrorCode& status) const;
239
262 virtual void getOffset(UDate date, UBool local, int32_t& rawOffset,
263 int32_t& dstOffset, UErrorCode& ec) const;
264
272 virtual void setRawOffset(int32_t offsetMillis);
273
281 virtual int32_t getRawOffset(void) const;
282
289 virtual UBool useDaylightTime(void) const;
290
304 virtual UBool inDaylightTime(UDate date, UErrorCode& status) const;
305
314 virtual UBool hasSameRules(const TimeZone& other) const;
315
324 virtual UBool getNextTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const;
325
334 virtual UBool getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const;
335
344 virtual int32_t countTransitionRules(UErrorCode& status) const;
345
362 virtual void getTimeZoneRules(const InitialTimeZoneRule*& initial,
363 const TimeZoneRule* trsrules[], int32_t& trscount, UErrorCode& status) const;
364
365 private:
366 enum { DEFAULT_VTIMEZONE_LINES = 100 };
367
371 VTimeZone();
372 static VTimeZone* createVTimeZone(VTZReader* reader);
373 void write(VTZWriter& writer, UErrorCode& status) const;
374 void write(UDate start, VTZWriter& writer, UErrorCode& status) const;
375 void writeSimple(UDate time, VTZWriter& writer, UErrorCode& status) const;
376 void load(VTZReader& reader, UErrorCode& status);
377 void parse(UErrorCode& status);
378
379 void writeZone(VTZWriter& w, BasicTimeZone& basictz, UVector* customProps,
380 UErrorCode& status) const;
381
382 void writeHeaders(VTZWriter& w, UErrorCode& status) const;
383 void writeFooter(VTZWriter& writer, UErrorCode& status) const;
384
385 void writeZonePropsByTime(VTZWriter& writer, UBool isDst, const UnicodeString& zonename,
386 int32_t fromOffset, int32_t toOffset, UDate time, UBool withRDATE,
387 UErrorCode& status) const;
388 void writeZonePropsByDOM(VTZWriter& writer, UBool isDst, const UnicodeString& zonename,
389 int32_t fromOffset, int32_t toOffset,
390 int32_t month, int32_t dayOfMonth, UDate startTime, UDate untilTime,
391 UErrorCode& status) const;
392 void writeZonePropsByDOW(VTZWriter& writer, UBool isDst, const UnicodeString& zonename,
393 int32_t fromOffset, int32_t toOffset,
394 int32_t month, int32_t weekInMonth, int32_t dayOfWeek,
395 UDate startTime, UDate untilTime, UErrorCode& status) const;
396 void writeZonePropsByDOW_GEQ_DOM(VTZWriter& writer, UBool isDst, const UnicodeString& zonename,
397 int32_t fromOffset, int32_t toOffset,
398 int32_t month, int32_t dayOfMonth, int32_t dayOfWeek,
399 UDate startTime, UDate untilTime, UErrorCode& status) const;
400 void writeZonePropsByDOW_GEQ_DOM_sub(VTZWriter& writer, int32_t month, int32_t dayOfMonth,
401 int32_t dayOfWeek, int32_t numDays,
402 UDate untilTime, int32_t fromOffset, UErrorCode& status) const;
403 void writeZonePropsByDOW_LEQ_DOM(VTZWriter& writer, UBool isDst, const UnicodeString& zonename,
404 int32_t fromOffset, int32_t toOffset,
405 int32_t month, int32_t dayOfMonth, int32_t dayOfWeek,
406 UDate startTime, UDate untilTime, UErrorCode& status) const;
407 void writeFinalRule(VTZWriter& writer, UBool isDst, const AnnualTimeZoneRule* rule,
408 int32_t fromRawOffset, int32_t fromDSTSavings,
409 UDate startTime, UErrorCode& status) const;
410
411 void beginZoneProps(VTZWriter& writer, UBool isDst, const UnicodeString& zonename,
412 int32_t fromOffset, int32_t toOffset, UDate startTime, UErrorCode& status) const;
413 void endZoneProps(VTZWriter& writer, UBool isDst, UErrorCode& status) const;
414 void beginRRULE(VTZWriter& writer, int32_t month, UErrorCode& status) const;
415 void appendUNTIL(VTZWriter& writer, const UnicodeString& until, UErrorCode& status) const;
416
417 BasicTimeZone *tz;
418 UVector *vtzlines;
419 UnicodeString tzurl;
420 UDate lastmod;
421 UnicodeString olsonzid;
422 UnicodeString icutzver;
423
424 public:
436 static UClassID U_EXPORT2 getStaticClassID(void);
437
449 virtual UClassID getDynamicClassID(void) const;
450 };
451
452 U_NAMESPACE_END
453
454 #endif /* #if !UCONFIG_NO_FORMATTING */
455
456 #endif // VTZONE_H
457 //eof
icu::TimeZone::useDaylightTime
virtual UBool useDaylightTime(void) const =0
Queries if this time zone uses daylight savings time.
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::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&#39;s adjusted GMT offset (i.e., the number of milliseconds to add to GMT to get loc...
icu::TimeZone::operator=
TimeZone & operator=(const TimeZone &right)
Default assignment operator.
UDate
double UDate
Date and Time data type.
Definition: utypes.h:203
icu::TimeZone::operator==
virtual UBool operator==(const TimeZone &that) const
Returns true if the two TimeZones are equal.
UClassID
void * UClassID
UClassID is used to identify classes without using the compiler&#39;s RTTI.
Definition: uobject.h:90
icu::TimeZone::getStaticClassID
static UClassID getStaticClassID(void)
Return the class ID for this class.
icu::VTimeZone
VTimeZone is a class implementing RFC2445 VTIMEZONE.
Definition: vtzone.h:43
icu::TimeZone
TimeZone represents a time zone offset, and also figures out daylight savings.
Definition: timezone.h:131
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:301
icu::TimeZoneRule
TimeZoneRule is a class representing a rule for time zone.
Definition: tzrule.h:34
icu::InitialTimeZoneRule
InitialTimeZoneRule represents a time zone rule representing a time zone effective from the beginning...
Definition: tzrule.h:200
U_NAMESPACE_BEGIN
#define U_NAMESPACE_BEGIN
This is used to begin a declaration of a public ICU C++ API.
Definition: uversion.h:137
icu::TimeZone::clone
virtual TimeZone * clone(void) const =0
Clones TimeZone objects polymorphically.
icu::TimeZoneTransition
TimeZoneTransition is a class representing a time zone transition.
Definition: tztrans.h:33
icu::TimeZone::getDynamicClassID
virtual UClassID getDynamicClassID(void) const =0
Returns a unique class ID POLYMORPHICALLY.
icu::BasicTimeZone
BasicTimeZone is an abstract class extending TimeZone.
Definition: basictz.h:36
icu::AnnualTimeZoneRule
AnnualTimeZoneRule is a class used for representing a time zone rule which takes effect annually...
Definition: tzrule.h:378
U_NAMESPACE_END
#define U_NAMESPACE_END
This is used to end a declaration of a public ICU C++ API.
Definition: uversion.h:138
icu::TimeZone::setRawOffset
virtual void setRawOffset(int32_t offsetMillis)=0
Sets the TimeZone&#39;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:401
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::TimeZone::hasSameRules
virtual UBool hasSameRules(const TimeZone &other) const
Returns true if this zone has the same rule and offset as another zone.
utypes.h
Basic definitions for ICU, for both C and C++ APIs.
icu::UnicodeString
UnicodeString is a string class that stores Unicode characters directly and provides similar function...
Definition: unistr.h:289
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::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&#39;s raw GMT offset (i.e., the number of milliseconds to add to GMT to get local ti...
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!=
UBool operator!=(const TimeZone &that) const
Returns true if the two TimeZones are NOT equal; that is, if operator==() returns false...
Definition: timezone.h:454
UBool
int8_t UBool
The ICU boolean type.
Definition: umachine.h:225