AceTime
3.0.0
Date and time classes for Arduino that support timezones from the TZ Database.
|
An entry in ZoneInfo which describes which ZonePolicy was being followed during a particular time period. More...
#include <ZoneInfoHigh.h>
Public Attributes | |
const ZonePolicy *const | zonePolicy |
Zone policy, determined by the RULES column. More... | |
const char *const | format |
Zone abbreviations (e.g. More... | |
int16_t const | offsetCode |
UTC offset in 15-second increments. More... | |
uint8_t const | offsetRemainder |
The remainder seconds from offsetCode. | |
int8_t const | deltaMinutes |
If zonePolicy is nullptr, this is the DST offset in minutes as defined by the RULES column in 'hh:mm' format. More... | |
int16_t const | untilYear |
Era is valid until currentTime < untilYear. More... | |
uint8_t const | untilMonth |
The month field in UNTIL (1-12). More... | |
uint8_t const | untilDay |
The day field in UNTIL (1-31). More... | |
uint16_t const | untilTimeCode |
The time field of UNTIL field in 15-second increments. More... | |
uint8_t const | untilTimeModifier |
The untilTimeModifier is a packed field containing 2 pieces of info: More... | |
An entry in ZoneInfo which describes which ZonePolicy was being followed during a particular time period.
Corresponds to one line of the ZONE record in the TZ Database file ending with an UNTIL field. The ZonePolicy is determined by the RULES column in the TZ Database file.
There are 2 types of ZoneEra: 1) zonePolicy == nullptr. Then ZoneEra.deltaMinutes determines the additional offset from offsetCode. A value of '-' in the TZ Database file is stored as 0. 2) zonePolicy != nullptr. Then the deltaMinutes offset is given by the ZoneRule.deltaMinutes which matches the time instant of interest.
Definition at line 215 of file ZoneInfoHigh.h.
int8_t const ace_time::ZoneInfoHigh::ZoneEra::deltaMinutes |
If zonePolicy is nullptr, this is the DST offset in minutes as defined by the RULES column in 'hh:mm' format.
An 8-bit integer can handle DST offsets of [-128,127] minutes which allows it to handle DST offsets of [-02:00,02:00].
Definition at line 263 of file ZoneInfoHigh.h.
const char* const ace_time::ZoneInfoHigh::ZoneEra::format |
Zone abbreviations (e.g.
PST, EST) determined by the FORMAT column. It has 4 encodings in the TZ DB files:
1) A fixed string, e.g. "GMT". 2) Two strings separated by a '/', e.g. "-03/-02" indicating "{std}/{dst}" options. 3) A single string with a substitution, e.g. "E%sT", where the "%s" is replaced by the LETTER value from the ZoneRule. 4) An empty string representing the "%z" format.
BasicZoneProcessor supports only a single letter subsitution from LETTER, but ExtendedZoneProcessor supports substituting multi-character strings (e.g. "CAT", "DD", "+00").
The TZ DB files use 's' to indicate the substitution, but for simplicity, AceTime replaces the "%s" with just a '' character with no loss of functionality. This also makes the string-replacement code a little simpler. For example, 'EsT' is stored as 'ET', and the LETTER substitution is performed on the '' character.
This field will never be a 'nullptr' because the AceTimeTools compiler always generates a ZoneEra entry with a non-null format.
Definition at line 246 of file ZoneInfoHigh.h.
int16_t const ace_time::ZoneInfoHigh::ZoneEra::offsetCode |
UTC offset in 15-second increments.
Determined by the STDOFF column. The remainder goes into the offsetsRemainder field.
Definition at line 252 of file ZoneInfoHigh.h.
uint8_t const ace_time::ZoneInfoHigh::ZoneEra::untilDay |
The day field in UNTIL (1-31).
Will never be 0. Also, there's no need for untilDayOfWeek, because the database generator will resolve the exact day of month based on the known year and month.
Definition at line 278 of file ZoneInfoHigh.h.
uint8_t const ace_time::ZoneInfoHigh::ZoneEra::untilMonth |
uint16_t const ace_time::ZoneInfoHigh::ZoneEra::untilTimeCode |
The time field of UNTIL field in 15-second increments.
A range is [0,6000] corresponds to [0h,25h].
Definition at line 284 of file ZoneInfoHigh.h.
uint8_t const ace_time::ZoneInfoHigh::ZoneEra::untilTimeModifier |
The untilTimeModifier is a packed field containing 2 pieces of info:
Definition at line 296 of file ZoneInfoHigh.h.
int16_t const ace_time::ZoneInfoHigh::ZoneEra::untilYear |
Era is valid until currentTime < untilYear.
Comes from the UNTIL column.
Definition at line 268 of file ZoneInfoHigh.h.
const ZonePolicy* const ace_time::ZoneInfoHigh::ZoneEra::zonePolicy |
Zone policy, determined by the RULES column.
Set to nullptr if the RULES column is '-' or an explicit DST shift in the form of 'hh:mm'.
Definition at line 220 of file ZoneInfoHigh.h.