From 4336ebb749e0baa804ef2a52798882708b368dd8 Mon Sep 17 00:00:00 2001 From: Brian Park Date: Thu, 8 Aug 2019 22:06:11 -0700 Subject: [PATCH 01/55] src/TimeZoneData: Change serialization format to use minutes instead of 'offsetCode' (15-minute increments) --- CHANGELOG.md | 5 +++++ src/ace_time/TimeZone.h | 4 ++-- src/ace_time/TimeZoneData.h | 27 +++++++++++++++++++-------- src/ace_time/ZoneManager.h | 4 ++-- tests/TimeZoneTest/TimeZoneTest.ino | 8 ++++---- 5 files changed, 32 insertions(+), 16 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 73b0c4693..6db5e87c9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Changelog * Unreleased + * Change TimeZoneData to store mStdOffset and mDstOffset in units of + one minute (instead of 15-minute increments, "code") in the off chance + that the library supports timezones with one-minute shifts in the future. + I am treating this as "non-breaking" change because TimeZoneData is + handled as basically an opaque object by all downstream apps currently. * 0.6.1 * Create a second Jenkins continuous build pipeline file `tests/JenskinfileUnitHost` to use UnitHostDuino to run the unit tests diff --git a/src/ace_time/TimeZone.h b/src/ace_time/TimeZone.h index 9c1cfe759..9209e66d2 100644 --- a/src/ace_time/TimeZone.h +++ b/src/ace_time/TimeZone.h @@ -310,8 +310,8 @@ class TimeZone { TimeZoneData d; switch (mType) { case TimeZone::kTypeManual: - d.stdOffsetCode = mStdOffsetCode; - d.dstOffsetCode = mDstOffsetCode; + d.stdOffsetMinutes = mStdOffsetCode * 15; + d.dstOffsetMinutes = mDstOffsetCode * 15; d.type = TimeZoneData::kTypeManual; break; case TimeZone::kTypeBasic: diff --git a/src/ace_time/TimeZoneData.h b/src/ace_time/TimeZoneData.h index a295e6aa1..52cafaebc 100644 --- a/src/ace_time/TimeZoneData.h +++ b/src/ace_time/TimeZoneData.h @@ -13,9 +13,16 @@ namespace ace_time { /** * Data structure that captures the internal state of a TimeZone object with - * enough information so that it can be reconstructed using a ZoneManager. - * The data structure can be stored persistently then read back. - * TimeZone::forTimeZoneData() factory method. + * enough information so that it can be serialized using + * TimeZone::toTimeZoneData() then reconstructed using + * ZoneManager::createForTimeZoneData(). This data structure is meant to a + * simple and somewhat opaque serialization object. You should not rely on this + * struct to remain stable, nor reach into its internal fields. No versioning + * is provided for simplicity. If the internal format changes in the future, + * the previous version will likely be incompatible with the new version of the + * library. It is recommended to use a CRC check to detect version + * incompatibility if this data structure is saved (e.g. EEPROM) and retrieved + * later . */ struct TimeZoneData { static const uint8_t kTypeError = 0; @@ -25,10 +32,14 @@ struct TimeZoneData { uint8_t type; union { - /** Used for kTypeManual. */ + /** + * Used for kTypeManual. Use minutes instead of TimeOffsetCode (i.e. + * 15-minute increments in the off chance that a future version of this + * library supports timezones that shift by one-minute increments. + */ struct { - int8_t stdOffsetCode; - int8_t dstOffsetCode; + int16_t stdOffsetMinutes; + int16_t dstOffsetMinutes; }; /** @@ -43,8 +54,8 @@ inline bool operator==(const TimeZoneData& a, const TimeZoneData& b) { if (a.type != b.type) return false; switch (a.type) { case TimeZoneData::kTypeManual: - return (a.stdOffsetCode == b.stdOffsetCode) - && (a.dstOffsetCode == b.dstOffsetCode); + return (a.stdOffsetMinutes == b.stdOffsetMinutes) + && (a.dstOffsetMinutes == b.dstOffsetMinutes); case TimeZoneData::kTypeZoneId: return (a.zoneId == b.zoneId); default: diff --git a/src/ace_time/ZoneManager.h b/src/ace_time/ZoneManager.h index de3198ba5..3474776eb 100644 --- a/src/ace_time/ZoneManager.h +++ b/src/ace_time/ZoneManager.h @@ -62,8 +62,8 @@ class ZoneManager { return TimeZone::forError(); case TimeZone::kTypeManual: return TimeZone::forTimeOffset( - TimeOffset::forOffsetCode(d.stdOffsetCode), - TimeOffset::forOffsetCode(d.dstOffsetCode)); + TimeOffset::forMinutes(d.stdOffsetMinutes), + TimeOffset::forMinutes(d.dstOffsetMinutes)); case TimeZone::kTypeBasic: case TimeZone::kTypeExtended: return createForZoneId(d.zoneId); diff --git a/tests/TimeZoneTest/TimeZoneTest.ino b/tests/TimeZoneTest/TimeZoneTest.ino index 44c101de7..81a99588c 100644 --- a/tests/TimeZoneTest/TimeZoneTest.ino +++ b/tests/TimeZoneTest/TimeZoneTest.ino @@ -220,8 +220,8 @@ test(TimeZoneDataTest, utc) { auto tz = TimeZone::forUtc(); auto tzd = tz.toTimeZoneData(); assertEqual(TimeZone::kTypeManual, tzd.type); - assertEqual(0, tzd.stdOffsetCode); - assertEqual(0, tzd.dstOffsetCode); + assertEqual(0, tzd.stdOffsetMinutes); + assertEqual(0, tzd.dstOffsetMinutes); auto tzCycle = basicZoneManager.createForTimeZoneData(tzd); assertTrue(tz == tzCycle); @@ -232,8 +232,8 @@ test(TimeZoneDataTest, manual) { TimeOffset::forHour(1)); auto tzd = tz.toTimeZoneData(); assertEqual(TimeZone::kTypeManual, tzd.type); - assertEqual(-8 * 4, tzd.stdOffsetCode); - assertEqual(4, tzd.dstOffsetCode); + assertEqual(-8 * 60, tzd.stdOffsetMinutes); + assertEqual(1 * 60, tzd.dstOffsetMinutes); auto tzCycle = basicZoneManager.createForTimeZoneData(tzd); assertTrue(tz == tzCycle); From e8fc623436b83abb56f9b37368bdb402c3a99cab Mon Sep 17 00:00:00 2001 From: Brian Park Date: Thu, 8 Aug 2019 22:19:27 -0700 Subject: [PATCH 02/55] README.md: OCD fix to move to the beginning of the list --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1229c2791..6dc2e405b 100644 --- a/README.md +++ b/README.md @@ -15,8 +15,8 @@ The AceTime classes are organized into roughly 4 bundles, placed in different C++ namespaces: * date and time classes and types - * `ace_time::DateStrings` * `ace_time::acetime_t` + * `ace_time::DateStrings` * `ace_time::LocalTime` * `ace_time::LocalDate` * `ace_time::LocalDateTime` From 94943e60c47e42d63b63b4afefab222c6af684ad Mon Sep 17 00:00:00 2001 From: Brian Park Date: Thu, 8 Aug 2019 22:35:57 -0700 Subject: [PATCH 03/55] tests/ExtendedZoneProcessorTest: Use TimeOffset::forHour() instead of forOffsetCode() which may become deprecated in the future --- .../ExtendedZoneProcessorTest/ExtendedZoneProcessorTest.ino | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/ExtendedZoneProcessorTest/ExtendedZoneProcessorTest.ino b/tests/ExtendedZoneProcessorTest/ExtendedZoneProcessorTest.ino index 6ab52d640..f2d65ac93 100644 --- a/tests/ExtendedZoneProcessorTest/ExtendedZoneProcessorTest.ino +++ b/tests/ExtendedZoneProcessorTest/ExtendedZoneProcessorTest.ino @@ -673,7 +673,7 @@ test(ExtendedZoneProcessorTest, fixTransitionTimes_generateStartUntilTimes) { assertTrue((transition1->startDateTime == DateTuple{18, 12, 1, 0, 'w'})); assertTrue((transition1->untilDateTime == DateTuple{19, 3, 10, 8, 'w'})); acetime_t epochSecs = OffsetDateTime::forComponents( - 2018, 12, 1, 0, 0, 0, TimeOffset::forOffsetCode(-32)).toEpochSeconds(); + 2018, 12, 1, 0, 0, 0, TimeOffset::forHour(-8)).toEpochSeconds(); assertEqual(epochSecs, transition1->startEpochSeconds); // Second transition startTime is shifted forward one hour into PDT. @@ -681,7 +681,7 @@ test(ExtendedZoneProcessorTest, fixTransitionTimes_generateStartUntilTimes) { assertTrue((transition2->startDateTime == DateTuple{19, 3, 10, 12, 'w'})); assertTrue((transition2->untilDateTime == DateTuple{19, 11, 3, 8, 'w'})); epochSecs = OffsetDateTime::forComponents( - 2019, 3, 10, 3, 0, 0, TimeOffset::forOffsetCode(-28)).toEpochSeconds(); + 2019, 3, 10, 3, 0, 0, TimeOffset::forHour(-7)).toEpochSeconds(); assertEqual(epochSecs, transition2->startEpochSeconds); // Third transition startTime is shifted back one hour into PST. @@ -689,7 +689,7 @@ test(ExtendedZoneProcessorTest, fixTransitionTimes_generateStartUntilTimes) { assertTrue((transition3->startDateTime == DateTuple{19, 11, 3, 4, 'w'})); assertTrue((transition3->untilDateTime == DateTuple{20, 2, 1, 0, 'w'})); epochSecs = OffsetDateTime::forComponents( - 2019, 11, 3, 1, 0, 0, TimeOffset::forOffsetCode(-32)).toEpochSeconds(); + 2019, 11, 3, 1, 0, 0, TimeOffset::forHour(-8)).toEpochSeconds(); assertEqual(epochSecs, transition3->startEpochSeconds); } From 2e116a1a183d498e0a7fc906adf2a8f698b666fb Mon Sep 17 00:00:00 2001 From: Brian Park Date: Thu, 8 Aug 2019 23:06:59 -0700 Subject: [PATCH 04/55] README.md: Add Status note that the internal format of zoneinfo files may change --- README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 6dc2e405b..925c055af 100644 --- a/README.md +++ b/README.md @@ -200,7 +200,11 @@ Conversion from an epochSeconds to date-time components including timezone **Version**: 0.6.1 (2019-08-07, TZ DB version 2019a, beta) -**Status**: Stable, no major refactoring planned. Expected to go to 1.0 soon. +**Status**: I'm considering some changes to the internal format of the +`zonedb::` and `zonedbx::` zoneinfo files which will increase the time +resolution of DST shifts from 15-minute resolution to 1-minute resolution, +without increasing size of the database size. I think I can do this with almost +no changes to the library's external API. ## Examples From 5804d7e90961712fb176127790cc6737c626bba4 Mon Sep 17 00:00:00 2001 From: Brian Park Date: Fri, 9 Aug 2019 11:49:29 -0700 Subject: [PATCH 05/55] tools: Collect multiple removal or notable 'reasons' for a given zone or policy (helps debugging) --- src/ace_time/zonedbx/zone_infos.h | 2 +- .../zonedbx2018g/zone_infos.h | 2 +- tools/argenerator.py | 24 +- tools/transformer.py | 259 ++++++++++-------- 4 files changed, 155 insertions(+), 132 deletions(-) diff --git a/src/ace_time/zonedbx/zone_infos.h b/src/ace_time/zonedbx/zone_infos.h index 60dcdcda0..83d38bf39 100644 --- a/src/ace_time/zonedbx/zone_infos.h +++ b/src/ace_time/zonedbx/zone_infos.h @@ -645,7 +645,7 @@ extern const extended::ZoneInfo& kZoneZulu; // Zulu -> Etc/UTC // America/Goose_Bay (AT time '0:01' of RULE 'StJohns' truncated to '00:00') // America/Moncton (AT time '0:01' of RULE 'Moncton' truncated to '00:00') // America/St_Johns (AT time '0:01' of RULE 'StJohns' truncated to '00:00') -// Asia/Gaza (AT time '0:01' of RULE 'Palestine' truncated to '00:00') +// Asia/Gaza (UNTIL time '0:01' truncated to '00:00', AT time '0:01' of RULE 'Palestine' truncated to '00:00') // Asia/Hebron (AT time '0:01' of RULE 'Palestine' truncated to '00:00') diff --git a/tests/validation/ExtendedValidationUsingJavaTest/zonedbx2018g/zone_infos.h b/tests/validation/ExtendedValidationUsingJavaTest/zonedbx2018g/zone_infos.h index 2be1c052d..36e815eb2 100644 --- a/tests/validation/ExtendedValidationUsingJavaTest/zonedbx2018g/zone_infos.h +++ b/tests/validation/ExtendedValidationUsingJavaTest/zonedbx2018g/zone_infos.h @@ -644,7 +644,7 @@ extern const extended::ZoneInfo& kZoneZulu; // Zulu -> Etc/UTC // America/Goose_Bay (AT time '0:01' of RULE 'StJohns' truncated to '00:00') // America/Moncton (AT time '0:01' of RULE 'Moncton' truncated to '00:00') // America/St_Johns (AT time '0:01' of RULE 'StJohns' truncated to '00:00') -// Asia/Gaza (AT time '0:01' of RULE 'Palestine' truncated to '00:00') +// Asia/Gaza (UNTIL time '0:01' truncated to '00:00', AT time '0:01' of RULE 'Palestine' truncated to '00:00') // Asia/Hebron (AT time '0:01' of RULE 'Palestine' truncated to '00:00') diff --git a/tools/argenerator.py b/tools/argenerator.py index a0717045a..f50923567 100644 --- a/tools/argenerator.py +++ b/tools/argenerator.py @@ -306,18 +306,18 @@ def generate_policies_h(self): scope=self.scope) removed_policy_items = '' - for name, reason in sorted(self.removed_policies.items()): + for name, reasons in sorted(self.removed_policies.items()): removed_policy_items += \ self.ZONE_POLICIES_H_REMOVED_POLICY_ITEM.format( policyName=name, - policyReason=reason) + policyReason=', '.join(reasons)) notable_policy_items = '' - for name, reason in sorted(self.notable_policies.items()): + for name, reasons in sorted(self.notable_policies.items()): notable_policy_items += \ self.ZONE_POLICIES_H_NOTABLE_POLICY_ITEM.format( policyName=name, - policyReason=reason) + policyReason=', '.join(reasons)) return self.ZONE_POLICIES_H_FILE.format( invocation=self.invocation, @@ -674,14 +674,14 @@ def generate_infos_h(self): zoneFullName=zone_name) removed_info_items = '' - for zone_name, reason in sorted(self.removed_zones.items()): + for zone_name, reasons in sorted(self.removed_zones.items()): removed_info_items += self.ZONE_INFOS_H_REMOVED_INFO_ITEM.format( - zoneFullName=zone_name, reason=reason) + zoneFullName=zone_name, reason=', '.join(reasons)) notable_info_items = '' - for zone_name, reason in sorted(self.notable_zones.items()): + for zone_name, reasons in sorted(self.notable_zones.items()): notable_info_items += self.ZONE_INFOS_H_NOTABLE_INFO_ITEM.format( - zoneFullName=zone_name, reason=reason) + zoneFullName=zone_name, reason=', '.join(reasons)) link_items = '' for link_name, zone_name in sorted(self.links_map.items()): @@ -692,14 +692,14 @@ def generate_infos_h(self): zoneFullName=zone_name) removed_link_items = '' - for link_name, reason in sorted(self.removed_links.items()): + for link_name, reasons in sorted(self.removed_links.items()): removed_link_items += self.ZONE_INFOS_H_REMOVED_LINK_ITEM.format( - linkFullName=link_name, reason=reason) + linkFullName=link_name, reason=', '.join(reasons)) notable_link_items = '' - for link_name, reason in sorted(self.notable_links.items()): + for link_name, reasons in sorted(self.notable_links.items()): notable_link_items += self.ZONE_INFOS_H_NOTABLE_LINK_ITEM.format( - linkFullName=link_name, reason=reason) + linkFullName=link_name, reason=', '.join(reasons)) return self.ZONE_INFOS_H_FILE.format( invocation=self.invocation, diff --git a/tools/transformer.py b/tools/transformer.py index c5cfdadf9..9136f1a5b 100644 --- a/tools/transformer.py +++ b/tools/transformer.py @@ -201,11 +201,11 @@ def _remove_zones_without_slash(self, zones_map): if name.rfind('/') >= 0: results[name] = eras else: - removed_zones[name] = "No '/' in zone name" + _add_reason(removed_zones, name, "No '/' in zone name") logging.info( "Removed %s zone infos without '/' in name" % len(removed_zones)) - self.all_removed_zones.update(removed_zones) + _merge_reasons(self.all_removed_zones, removed_zones) return results def _detect_hash_collisions(self, zones_map): @@ -284,12 +284,12 @@ def _remove_zones_without_eras(self, zones_map): if eras: results[name] = eras else: - removed_zones[name] = "no ZoneEra found" + _add_reason(removed_zones, name, "no ZoneEra found") logging.info( "Removed %s zone infos without ZoneEras" % len(removed_zones)) self._print_removed_map(removed_zones) - self.all_removed_zones.update(removed_zones) + _merge_reasons(self.all_removed_zones, removed_zones) return results def _remove_zone_until_year_only_false(self, zones_map): @@ -303,7 +303,8 @@ def _remove_zone_until_year_only_false(self, zones_map): for era in eras: if not era.untilYearOnly: valid = False - removed_zones[name] = "UNTIL contains month/day/time" + _add_reason(removed_zones, name, + "UNTIL contains month/day/time") break if valid: results[name] = eras @@ -311,7 +312,7 @@ def _remove_zone_until_year_only_false(self, zones_map): logging.info("Removed %s zone infos with UNTIL month/day/time", len(removed_zones)) self._print_removed_map(removed_zones) - self.all_removed_zones.update(removed_zones) + _merge_reasons(self.all_removed_zones, removed_zones) return results def _create_zones_with_until_day(self, zones_map): @@ -335,7 +336,8 @@ def _create_zones_with_until_day(self, zones_map): parse_on_day_string(until_day) if (on_day_of_week, on_day_of_month) == (0, 0): valid = False - removed_zones[name] = "invalid untilDay '%s'" % until_day + _add_reason(removed_zones, name, + f"invalid untilDay '{until_day}'") break era.untilDay = calc_day_of_month( @@ -347,7 +349,7 @@ def _create_zones_with_until_day(self, zones_map): logging.info("Removed %s zone infos with invalid untilDay", len(removed_zones)) self._print_removed_map(removed_zones) - self.all_removed_zones.update(removed_zones) + _merge_reasons(self.all_removed_zones, removed_zones) return results def _create_zones_with_expanded_until_time(self, zones_map): @@ -363,13 +365,13 @@ def _create_zones_with_expanded_until_time(self, zones_map): until_seconds = time_string_to_seconds(until_time) if until_seconds == INVALID_SECONDS: valid = False - removed_zones[name] = ( - "invalid UNTIL time '%s'" % until_time) + _add_reason(removed_zones, name, + f"invalid UNTIL time '%until_time'") break if until_seconds < 0: valid = False - removed_zones[name] = ( - "negative UNTIL time '%s'" % until_time) + _add_reason(removed_zones, name, + f"negative UNTIL time '{until_time}'") break until_seconds_truncated = truncate_to_granularity( @@ -377,15 +379,14 @@ def _create_zones_with_expanded_until_time(self, zones_map): if until_seconds != until_seconds_truncated: if self.strict: valid = False - removed_zones[name] = ( - "UNTIL time '%s' must be multiples of '%s' seconds" - % (until_time, self.granularity)) + _add_reason(removed_zones, name, + f"UNTIL time '{until_time}' must be multiples " + f"of '{self.granularity}' seconds") break else: - notable_zones[name] = ( - "UNTIL time '%s' truncated to '%s'" % - (until_time, - seconds_to_hm_string(until_seconds_truncated))) + hm = seconds_to_hm_string(until_seconds_truncated) + _add_reason(notable_zones, name, + f"UNTIL time '{until_time}' truncated to '{hm}'") era.untilSeconds = until_seconds era.untilSecondsTruncated = until_seconds_truncated @@ -395,8 +396,8 @@ def _create_zones_with_expanded_until_time(self, zones_map): logging.info("Removed %s zone infos with invalid UNTIL time", len(removed_zones)) self._print_removed_map(removed_zones) - self.all_removed_zones.update(removed_zones) - self.all_notable_zones.update(notable_zones) + _merge_reasons(self.all_removed_zones, removed_zones) + _merge_reasons(self.all_notable_zones, notable_zones) return results def _remove_zones_invalid_until_time_modifier(self, zones_map): @@ -423,8 +424,8 @@ def _remove_zones_invalid_until_time_modifier(self, zones_map): era.untilTimeModifier = modifier if modifier not in supported_suffices: valid = False - removed_zones[name] = ( - "unsupported UNTIL time modifier '%s'" % modifier) + _add_reason(removed_zones, name, + f"unsupported UNTIL time modifier '{modifier}'") break if valid: results[name] = eras @@ -433,7 +434,7 @@ def _remove_zones_invalid_until_time_modifier(self, zones_map): "Removed %s zone infos with unsupported UNTIL time modifier", len(removed_zones)) self._print_removed_map(removed_zones) - self.all_removed_policies.update(removed_zones) + _merge_reasons(self.all_removed_policies, removed_zones) return results def _create_zones_with_expanded_offset_string(self, zones_map): @@ -449,8 +450,8 @@ def _create_zones_with_expanded_offset_string(self, zones_map): offset_seconds = time_string_to_seconds(offset_string) if offset_seconds == INVALID_SECONDS: valid = False - removed_zones[name] = ( - "invalid GMTOFF offset string '%s'" % offset_string) + _add_reason(removed_zones, name, + f"invalid GMTOFF offset string '{offset_string}'") break offset_seconds_truncated = truncate_to_granularity( @@ -458,15 +459,14 @@ def _create_zones_with_expanded_offset_string(self, zones_map): if offset_seconds != offset_seconds_truncated: if self.strict: valid = False - removed_zones[name] = ( - "GMTOFF '%s' must be multiples of '%s' seconds" % - (offset_string, self.granularity)) + _add_reason(removed_zones, name, + f"GMTOFF '{offset_string}' must be multiples of " + f"'{self.granularity}' seconds") break else: - notable_zones[name] = ( - "GMTOFF '%s' truncated to '%s'" % - (offset_string, - seconds_to_hm_string(offset_seconds_truncated))) + hm = seconds_to_hm_string(offset_seconds_truncated) + _add_reason(notable_zones, name, + "GMTOFF '{offset_string}' truncated to '{hm}'") era.offsetSeconds = offset_seconds era.offsetSecondsTruncated = offset_seconds_truncated @@ -477,8 +477,8 @@ def _create_zones_with_expanded_offset_string(self, zones_map): logging.info("Removed %s zones with invalid offsetString", len(removed_zones)) self._print_removed_map(removed_zones) - self.all_removed_zones.update(removed_zones) - self.all_notable_zones.update(notable_zones) + _merge_reasons(self.all_removed_zones, removed_zones) + _merge_reasons(self.all_notable_zones, notable_zones) return results def _remove_zones_with_invalid_rules_format_combo(self, zones_map): @@ -502,25 +502,25 @@ def _remove_zones_with_invalid_rules_format_combo(self, zones_map): valid = True for era in eras: if not era.format: - removed_zones[zone_name] = 'FORMAT is empty' + _add_reason(removed_zones, zone_name, 'FORMAT is empty') valid = False break if era.rules == '-' or ':' in era.rules: if '%' in era.format: - removed_zones[zone_name] = ( + _add_reason(removed_zones, zone_name, "RULES is fixed but FORMAT contains '%'") valid = False break if '/' in era.format: - removed_zones[zone_name] = ( + _add_reason(removed_zones, zone_name, "RULES is fixed but FORMAT contains '/'") valid = False break else: if not ('%' in era.format or '/' in era.format): if zone_name != 'Africa/Johannesburg': - notable_zones[zone_name] = ( + _add_reason(notable_zones, zone_name, "RULES not fixed but FORMAT is missing " + "'%' or '/'") valid = True @@ -532,8 +532,8 @@ def _remove_zones_with_invalid_rules_format_combo(self, zones_map): logging.info("Removed %s zones with invalid RULES and FORMAT combo", len(removed_zones)) self._print_removed_map(removed_zones) - self.all_removed_zones.update(removed_zones) - self.all_notable_zones.update(notable_zones) + _merge_reasons(self.all_removed_zones, removed_zones) + _merge_reasons(self.all_notable_zones, notable_zones) return results def _create_zones_with_rules_expansion(self, zones_map): @@ -560,20 +560,20 @@ def _create_zones_with_rules_expansion(self, zones_map): if rules_string.find(':') >= 0: if self.scope == 'basic': valid = False - removed_zones[name] = ( - "offset in RULES '%s'" % rules_string) + _add_reason(removed_zones, name, + f"offset in RULES '{rules_string}'") break rules_delta_seconds = time_string_to_seconds(rules_string) if rules_delta_seconds == INVALID_SECONDS: valid = False - removed_zones[name] = ( - "invalid RULES string '%s'" % rules_string) + _add_reason(removed_zones, name, + f"invalid RULES string '{rules_string}'") break if rules_delta_seconds == 0: valid = False - removed_zones[name] = ( - "unexpected 0:00 RULES string '%s'" % rules_string) + _add_reason(removed_zones, name, + f"unexpected 0:00 RULES string '{rules_string}'") break rules_delta_seconds_truncated = truncate_to_granularity( @@ -581,17 +581,16 @@ def _create_zones_with_rules_expansion(self, zones_map): if rules_delta_seconds != rules_delta_seconds_truncated: if self.strict: valid = False - removed_zones[name] = ( - "RULES delta offset '%s' must be multiples of " - + "'%s' seconds" % - (rules_string, self.granularity)) + _add_reason(removed_zones, name, + f"RULES delta offset '{rules_string}' must be " + f"multiples of '{self.granularity}' seconds") break else: - notable_zones[name] = ( - "RULES delta offset '%s' truncated to '%s'" % - (rules_string, - seconds_to_hm_string( - rules_delta_seconds_truncated))) + hm = seconds_to_hm_string( + rules_delta_seconds_truncated) + _add_reason(notable_zones, name, + f"RULES delta offset '{rules_string}'" + f"truncated to '{hm}'") era.rules = ':' era.rulesDeltaSeconds = rules_delta_seconds @@ -607,8 +606,8 @@ def _create_zones_with_rules_expansion(self, zones_map): logging.info("Removed %s zone infos with invalid RULES", len(removed_zones)) self._print_removed_map(removed_zones) - self.all_removed_zones.update(removed_zones) - self.all_notable_zones.update(notable_zones) + _merge_reasons(self.all_removed_zones, removed_zones) + _merge_reasons(self.all_notable_zones, notable_zones) return results def _remove_zones_without_rules(self, zones_map, rules_map): @@ -623,7 +622,8 @@ def _remove_zones_without_rules(self, zones_map, rules_map): rule_name = era.rules if rule_name not in ['-', ':'] and rule_name not in rules_map: valid = False - removed_zones[name] = "policy '%s' not found" % rule_name + _add_reason(removed_zones, name, + f"policy '{rule_name}' not found") break if valid: results[name] = eras @@ -631,7 +631,7 @@ def _remove_zones_without_rules(self, zones_map, rules_map): logging.info( "Removed %s zone infos without rules" % len(removed_zones)) self._print_removed_map(removed_zones) - self.all_removed_zones.update(removed_zones) + _merge_reasons(self.all_removed_zones, removed_zones) return results def _remove_zones_with_non_monotonic_until(self, zones_map): @@ -656,14 +656,14 @@ def _remove_zones_with_non_monotonic_until(self, zones_map): if prev_until: if current_until <= prev_until: valid = False - removed_zones[name] = ( + _add_reason(removed_zones, name, 'non increasing UNTIL: %04d-%02d-%02d %ds' % current_until) break prev_until = current_until if valid and current_until[0] != extractor.MAX_UNTIL_YEAR: valid = False - removed_zones[name] = ( + _add_reason(removed_zones, name, 'invalid final UNTIL: %04d-%02d-%02d %ds' % current_until) if valid: @@ -672,7 +672,7 @@ def _remove_zones_with_non_monotonic_until(self, zones_map): logging.info("Removed %s zone infos with invalid UNTIL fields", len(removed_zones)) self._print_removed_map(removed_zones) - self.all_removed_zones.update(removed_zones) + _merge_reasons(self.all_removed_zones, removed_zones) return results # -------------------------------------------------------------------- @@ -716,7 +716,7 @@ def _remove_rules_multiple_transitions_in_month(self, rules_map): for name, rules in rules_map.items(): removal = removals.get(name) if removal: - removed_policies[name] = ( + _add_reason(removed_policies, name, "Found %d transitions in year/month '%04d-%02d'" % removals[name]) else: @@ -726,7 +726,7 @@ def _remove_rules_multiple_transitions_in_month(self, rules_map): 'Removed %s rule policies with multiple transitions in one month' % len(removed_policies)) self._print_removed_map(removed_policies) - self.all_removed_policies.update(removed_policies) + _merge_reasons(self.all_removed_policies, removed_policies) return results def _remove_rules_long_dst_letter(self, rules_map): @@ -740,7 +740,8 @@ def _remove_rules_long_dst_letter(self, rules_map): letter = rule.letter if len(letter) > 1: valid = False - removed_policies[name] = "LETTER '%s' too long" % letter + _add_reason(removed_policies, name, + f"LETTER '{letter}' too long") break if valid: results[name] = rules @@ -748,7 +749,7 @@ def _remove_rules_long_dst_letter(self, rules_map): logging.info('Removed %s rule policies with long DST letter' % len(removed_policies)) self._print_removed_map(removed_policies) - self.all_removed_policies.update(removed_policies) + _merge_reasons(self.all_removed_policies, removed_policies) return results def _remove_rules_invalid_at_time_modifier(self, rules_map): @@ -769,8 +770,8 @@ def _remove_rules_invalid_at_time_modifier(self, rules_map): rule.atTimeModifier = modifier if modifier not in supported_suffices: valid = False - removed_policies[name] = ( - "unsupported AT time modifier '%s'" % modifier) + _add_reason(removed_policies, name, + f"unsupported AT time modifier '{modifier}'") break if valid: results[name] = rules @@ -778,7 +779,7 @@ def _remove_rules_invalid_at_time_modifier(self, rules_map): logging.info("Removed %s rule policies with unsupported AT modifier" % len(removed_policies)) self._print_removed_map(removed_policies) - self.all_removed_policies.update(removed_policies) + _merge_reasons(self.all_removed_policies, removed_policies) return results def _mark_rules_used_by_zones(self, zones_map, rules_map): @@ -861,11 +862,11 @@ def _remove_rules_unused(self, rules_map): if used_rules: results[name] = used_rules else: - removed_policies[name] = 'unused' + _add_reason(removed_policies, name, 'unused') logging.info('Removed %s rule policies (%s rules) not used' % (len(removed_policies), removed_rule_count)) - self.all_removed_policies.update(removed_policies) + _merge_reasons(self.all_removed_policies, removed_policies) return results def _remove_rules_out_of_bounds(self, rules_map): @@ -881,9 +882,9 @@ def _remove_rules_out_of_bounds(self, rules_map): to_year = rule.toYear if not is_year_tiny(from_year) or not is_year_tiny(from_year): valid = False - removed_policies[name] = ( - "fromYear (%s) or toYear (%s) out of bounds" % - (from_year, to_year)) + _add_reason(removed_policies, name, + f"fromYear ({from_year}) or toYear ({to_year}) " + f" out of bounds") break if valid: results[name] = rules @@ -892,7 +893,7 @@ def _remove_rules_out_of_bounds(self, rules_map): 'Removed %s rule policies with fromYear or toYear out of bounds' % len(removed_policies)) self._print_removed_map(removed_policies) - self.all_removed_policies.update(removed_policies) + _merge_reasons(self.all_removed_policies, removed_policies) return results def _create_rules_with_on_day_expansion(self, rules_map): @@ -909,20 +910,21 @@ def _create_rules_with_on_day_expansion(self, rules_map): if (on_day_of_week, on_day_of_month) == (0, 0): valid = False - removed_policies[name] = f"invalid onDay '%{on_day}'" + _add_reason(removed_policies, name, + f"invalid onDay '{on_day}'") break if on_day_of_week != 0 and on_day_of_month != 0: if -7 <= on_day_of_month and on_day_of_month < -1 and \ rule.inMonth == 1: valid = False - removed_policies[name] = \ - f"cannot shift '{on_day}' from Jan to prev year" + _add_reason(removed_policies, name, + f"cannot shift '{on_day}' from Jan to prev year") break if 26 <= on_day_of_month and rule.inMonth == 12: valid = False - removed_policies[name] = \ - f"cannot shift '%{on_day}' from Dec to next year" + _add_reason(removed_policies, name, + f"cannot shift '{on_day}' from Dec to next year") break rule.onDayOfWeek = on_day_of_week @@ -933,7 +935,7 @@ def _create_rules_with_on_day_expansion(self, rules_map): logging.info('Removed %s rule policies with invalid onDay' % len(removed_policies)) self._print_removed_map(removed_policies) - self.all_removed_policies.update(removed_policies) + _merge_reasons(self.all_removed_policies, removed_policies) return results def _create_rules_with_anchor_transition(self, rules_map): @@ -1024,7 +1026,7 @@ def _remove_rules_with_border_transitions(self, rules_map): if from_year > MIN_YEAR and to_year > MIN_YEAR: if month == 1 and on_day_of_month == 1: valid = False - removed_policies[name] = ( + _add_reason(removed_policies, name, "Transition in early year (%04d-%02d-%02d)" % (from_year, month, on_day_of_month)) break @@ -1034,7 +1036,7 @@ def _remove_rules_with_border_transitions(self, rules_map): logging.info("Removed %s rule policies with border Transitions" % len(removed_policies)) self._print_removed_map(removed_policies) - self.all_removed_policies.update(removed_policies) + _merge_reasons(self.all_removed_policies, removed_policies) return results def _create_rules_with_expanded_at_time(self, rules_map, rules_to_zones): @@ -1050,13 +1052,13 @@ def _create_rules_with_expanded_at_time(self, rules_map, rules_to_zones): at_seconds = time_string_to_seconds(at_time) if at_seconds == INVALID_SECONDS: valid = False - removed_policies[policy_name] = ( - "invalid AT time '%s'" % at_time) + _add_reason(removed_policies, policy_name, + f"invalid AT time '{at_time}'" % at_time) break if at_seconds < 0: valid = False - removed_policies[policy_name] = ( - "negative AT time '%s'" % at_time) + _add_reason(removed_policies, policy_name, + f"negative AT time '{at_time}'" % at_time) break at_seconds_truncated = truncate_to_granularity( @@ -1064,24 +1066,23 @@ def _create_rules_with_expanded_at_time(self, rules_map, rules_to_zones): if at_seconds != at_seconds_truncated: if self.strict: valid = False - removed_policies[policy_name] = ( - "AT time '%s' must be multiples of '%s' seconds" % - (at_time, self.granularity)) + _add_reason(removed_policies, policy_name, + f"AT time '{at_time}' must be multiples of " + f"'{self.granularity}' seconds") break else: - notable_policies[policy_name] = ( - "AT time '%s' truncated to '%s'" % - (at_time, - seconds_to_hm_string(at_seconds_truncated))) + hm = seconds_to_hm_string(at_seconds_truncated) + _add_reason(notable_policies, policy_name, + f"AT time '{at_time}' truncated to '{hm}'") # Add warning about the affected zones. zone_names = rules_to_zones.get(policy_name) if zone_names: for zone_name in zone_names: - self.all_notable_zones[zone_name] = ( - ("AT time '%s' of RULE '%s' " - + "truncated to '%s'") - % (at_time, policy_name, - seconds_to_hm_string(at_seconds_truncated))) + hm = seconds_to_hm_string(at_seconds_truncated) + _add_reason(self.all_notable_zones, zone_name, + f"AT time '{at_time}' of " + f"RULE '{policy_name}' " + f"truncated to '{hm}'") rule.atSeconds = at_seconds rule.atSecondsTruncated = at_seconds_truncated @@ -1091,8 +1092,8 @@ def _create_rules_with_expanded_at_time(self, rules_map, rules_to_zones): logging.info('Removed %s rule policies with invalid atTime' % len(removed_policies)) self._print_removed_map(removed_policies) - self.all_removed_policies.update(removed_policies) - self.all_notable_policies.update(notable_policies) + _merge_reasons(self.all_removed_policies, removed_policies) + _merge_reasons(self.all_notable_policies, notable_policies) return results def _create_rules_with_expanded_delta_offset(self, rules_map): @@ -1109,8 +1110,8 @@ def _create_rules_with_expanded_delta_offset(self, rules_map): delta_seconds = time_string_to_seconds(delta_offset) if delta_seconds == INVALID_SECONDS: valid = False - removed_policies[name] = ( - "invalid deltaOffset '%s'" % delta_offset) + _add_reason(removed_policies, name, + f"invalid deltaOffset '{delta_offset}'") break delta_seconds_truncated = truncate_to_granularity( @@ -1118,14 +1119,14 @@ def _create_rules_with_expanded_delta_offset(self, rules_map): if delta_seconds != delta_seconds_truncated: if self.strict: valid = False - removed_policies[name] = ( - "deltaOffset '%s' must be a multiple of " + - "'%s' seconds" % delta_offset, self.granularity) + _add_reason(removed_policies, name, + f"deltaOffset '{delta_offset}' must be " + f"a multiple of '{self.granularity}' seconds") break else: - notable_policies[name] = ( - "deltaOffset '%s' must be a multiple of " + - "'%s' seconds" % delta_offset, self.granularity) + _add_reason(notable_policies, name, + f"deltaOffset '{delta_offset}' must be " + f"a multiple of '{self.granularity}' seconds") rule.deltaSeconds = delta_seconds rule.deltaSecondsTruncated = delta_seconds_truncated @@ -1135,8 +1136,8 @@ def _create_rules_with_expanded_delta_offset(self, rules_map): logging.info('Removed %s rule policies with invalid deltaOffset' % len(removed_policies)) self._print_removed_map(removed_policies) - self.all_removed_policies.update(removed_policies) - self.all_notable_policies.update(notable_policies) + _merge_reasons(self.all_removed_policies, removed_policies) + _merge_reasons(self.all_notable_policies, notable_policies) return results # -------------------------------------------------------------------- @@ -1150,10 +1151,11 @@ def remove_links_to_missing_zones(self, links_map, zones_map): if zones_map.get(zone_name): results[link_name] = zone_name else: - removed_links[link_name] = f'Target Zone "{zone_name}" missing' + _add_reason(removed_links, link_name, + f'Target Zone "{zone_name}" missing') logging.info('Removed %s links with missing zones', len(removed_links)) - self.all_removed_links.update(removed_links) + _merge_reasons(self.all_removed_links, removed_links) return results def remove_zones_and_links_with_similar_names(self, zones_map, links_map): @@ -1167,7 +1169,8 @@ def remove_zones_and_links_with_similar_names(self, zones_map, links_map): for zone_name, value in zones_map.items(): nname = normalize_name(zone_name) if normalized_names.get(nname): - removed_zones[zone_name] = 'Duplicate normalized name' + _add_reason(removed_zones, zone_name, + 'Duplicate normalized name') else: normalized_names[nname] = zone_name result_zones[zone_name] = value @@ -1176,15 +1179,16 @@ def remove_zones_and_links_with_similar_names(self, zones_map, links_map): for link_name, value in links_map.items(): nname = normalize_name(link_name) if normalized_names.get(nname): - removed_links[link_name] = 'Duplicate normalized name' + _add_reason(removed_links, link_name, + 'Duplicate normalized name') else: normalized_names[nname] = link_name result_links[link_name] = value logging.info('Removed %d Zones and %s Links with duplicate names', len(removed_zones), len(removed_links)) - self.all_removed_zones.update(removed_zones) - self.all_removed_links.update(removed_links) + _merge_reasons(self.all_removed_zones, removed_zones) + _merge_reasons(self.all_removed_links, removed_links) return result_zones, result_links @@ -1549,3 +1553,22 @@ def hash_name(name): for c in name: hash = (33 * hash + ord(c)) % U32_MOD; return hash + +def _add_reason(m, name, reason): + """Add the human readable 'reason' to a map of {name -> reasons[]}. + """ + reasons = m.get(name) + if not reasons: + reasons = set() + m[name] = reasons + reasons.add(reason) + +def _merge_reasons(m, n): + """Given 2 dict of {name -> reasons[]}, merge n into m. + """ + for name, new_reasons in n.items(): + old_reasons = m.get(name) + if not old_reasons: + old_reasons = set() + m[name] = old_reasons + old_reasons.update(new_reasons) From 7f49eb264c94363e8e1a60853e1a86c8b4fbefbc Mon Sep 17 00:00:00 2001 From: Brian Park Date: Fri, 9 Aug 2019 08:25:55 -0700 Subject: [PATCH 06/55] src: Use explicit TIME_MODIFIER_{x} constants instead of 'w', 's' and 'u' to consume only the upper 4-bits of the xxxModifier field --- src/ace_time/BasicZoneProcessor.h | 4 +- src/ace_time/ExtendedZoneProcessor.cpp | 2 +- src/ace_time/ExtendedZoneProcessor.h | 45 ++-- src/ace_time/internal/ZoneContext.inc | 9 + src/ace_time/internal/ZonePolicy.h | 1 + .../BasicZoneProcessorTest.ino | 13 +- .../ExtendedZoneProcessorTest.ino | 255 ++++++++++-------- .../TransitionStorageTest.ino | 30 +-- tools/argenerator.py | 21 +- 9 files changed, 230 insertions(+), 150 deletions(-) diff --git a/src/ace_time/BasicZoneProcessor.h b/src/ace_time/BasicZoneProcessor.h index dde0cd15d..699543db3 100644 --- a/src/ace_time/BasicZoneProcessor.h +++ b/src/ace_time/BasicZoneProcessor.h @@ -752,9 +752,9 @@ class BasicZoneProcessor: public ZoneProcessor { */ static int8_t calcRuleOffsetCode(int8_t prevEffectiveOffsetCode, int8_t currentBaseOffsetCode, uint8_t atModifier) { - if (atModifier == 'w') { + if (atModifier == basic::ZoneContext::TIME_MODIFIER_W) { return prevEffectiveOffsetCode; - } else if (atModifier == 's') { + } else if (atModifier == basic::ZoneContext::TIME_MODIFIER_S) { return currentBaseOffsetCode; } else { // 'u', 'g' or 'z' return 0; diff --git a/src/ace_time/ExtendedZoneProcessor.cpp b/src/ace_time/ExtendedZoneProcessor.cpp index e3ae5523e..d10b67b66 100644 --- a/src/ace_time/ExtendedZoneProcessor.cpp +++ b/src/ace_time/ExtendedZoneProcessor.cpp @@ -19,7 +19,7 @@ const extended::ZoneEra ExtendedZoneProcessor::kAnchorEra ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/ + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/ }; void ExtendedZoneProcessor::printTo(Print& printer) const { diff --git a/src/ace_time/ExtendedZoneProcessor.h b/src/ace_time/ExtendedZoneProcessor.h index 7afa4f59c..595f9385b 100644 --- a/src/ace_time/ExtendedZoneProcessor.h +++ b/src/ace_time/ExtendedZoneProcessor.h @@ -66,7 +66,7 @@ struct DateTuple { uint8_t month; // [1-12] uint8_t day; // [1-31] int8_t timeCode; // 15-min intervals, negative values allowed - uint8_t modifier; // 's', 'w', 'u' + uint8_t modifier; // TIME_MODIFIER_S, TIME_MODIFIER_W, TIME_MODIFIER_U /** Used only for debugging. */ void log() const { @@ -551,7 +551,8 @@ class TransitionStorage { // Convert to DateTuple. If the localDateTime is not a multiple of 15 // minutes, the comparision (startTime < localDate) will still be valid. DateTuple localDate = { ldt.yearTiny(), ldt.month(), ldt.day(), - (int8_t) (ldt.hour() * 4 + ldt.minute() / 15), 'w' }; + (int8_t) (ldt.hour() * 4 + ldt.minute() / 15), + ZoneContext::TIME_MODIFIER_W }; const Transition* match = nullptr; for (uint8_t i = 0; i < mIndexFree; i++) { const Transition* candidate = mTransitions[i]; @@ -960,7 +961,8 @@ class ExtendedZoneProcessor: public ZoneProcessor { (int8_t) prev.untilTimeCode(), prev.untilTimeModifier() }; extended::DateTuple lowerBound = { - startYm.yearTiny, startYm.month, 1, 0, 'w' + startYm.yearTiny, startYm.month, 1, 0, + extended::ZoneContext::TIME_MODIFIER_W }; if (startDate < lowerBound) { startDate = lowerBound; @@ -971,7 +973,8 @@ class ExtendedZoneProcessor: public ZoneProcessor { (int8_t) era.untilTimeCode(), era.untilTimeModifier() }; extended::DateTuple upperBound = { - untilYm.yearTiny, untilYm.month, 1, 0, 'w' + untilYm.yearTiny, untilYm.month, 1, 0, + extended::ZoneContext::TIME_MODIFIER_W }; if (upperBound < untilDate) { untilDate = upperBound; @@ -1282,25 +1285,31 @@ class ExtendedZoneProcessor: public ZoneProcessor { if (ACE_TIME_EXTENDED_ZONE_PROCESSOR_DEBUG) { logging::printf("expandDateTuple()\n"); } - if (tt->modifier == 's') { + if (tt->modifier == extended::ZoneContext::TIME_MODIFIER_S) { *tts = *tt; *ttu = {tt->yearTiny, tt->month, tt->day, - (int8_t) (tt->timeCode - offsetCode), 'u'}; + (int8_t) (tt->timeCode - offsetCode), + extended::ZoneContext::TIME_MODIFIER_U}; *tt = {tt->yearTiny, tt->month, tt->day, - (int8_t) (tt->timeCode + deltaCode), 'w'}; - } else if (tt->modifier == 'u') { + (int8_t) (tt->timeCode + deltaCode), + extended::ZoneContext::TIME_MODIFIER_W}; + } else if (tt->modifier == extended::ZoneContext::TIME_MODIFIER_U) { *ttu = *tt; *tts = {tt->yearTiny, tt->month, tt->day, - (int8_t) (tt->timeCode + offsetCode), 's'}; + (int8_t) (tt->timeCode + offsetCode), + extended::ZoneContext::TIME_MODIFIER_S}; *tt = {tt->yearTiny, tt->month, tt->day, - (int8_t) (tt->timeCode + offsetCode + deltaCode), 'w'}; + (int8_t) (tt->timeCode + offsetCode + deltaCode), + extended::ZoneContext::TIME_MODIFIER_W}; } else { // Explicit set the modifier to 'w' in case it was something else. - tt->modifier = 'w'; + tt->modifier = extended::ZoneContext::TIME_MODIFIER_W; *tts = {tt->yearTiny, tt->month, tt->day, - (int8_t) (tt->timeCode - deltaCode), 's'}; + (int8_t) (tt->timeCode - deltaCode), + extended::ZoneContext::TIME_MODIFIER_S}; *ttu = {tt->yearTiny, tt->month, tt->day, - (int8_t) (tt->timeCode - deltaCode - offsetCode), 'u'}; + (int8_t) (tt->timeCode - deltaCode - offsetCode), + extended::ZoneContext::TIME_MODIFIER_U}; } if (ACE_TIME_EXTENDED_ZONE_PROCESSOR_DEBUG) { @@ -1428,9 +1437,10 @@ class ExtendedZoneProcessor: public ZoneProcessor { const extended::DateTuple* transitionTime; const extended::DateTuple& matchStart = match->startDateTime; - if (matchStart.modifier == 's') { + if (matchStart.modifier == extended::ZoneContext::TIME_MODIFIER_S) { transitionTime = &transition->transitionTimeS; - } else if (matchStart.modifier == 'u') { + } else if (matchStart.modifier == + extended::ZoneContext::TIME_MODIFIER_U) { transitionTime = &transition->transitionTimeU; } else { // assume 'w' transitionTime = &transition->transitionTime; @@ -1439,9 +1449,10 @@ class ExtendedZoneProcessor: public ZoneProcessor { if (*transitionTime == matchStart) return 0; const extended::DateTuple& matchUntil = match->untilDateTime; - if (matchUntil.modifier == 's') { + if (matchUntil.modifier == extended::ZoneContext::TIME_MODIFIER_S) { transitionTime = &transition->transitionTimeS; - } else if (matchUntil.modifier == 'u') { + } else if (matchUntil.modifier == + extended::ZoneContext::TIME_MODIFIER_U) { transitionTime = &transition->transitionTimeU; } else { // assume 'w' transitionTime = &transition->transitionTime; diff --git a/src/ace_time/internal/ZoneContext.inc b/src/ace_time/internal/ZoneContext.inc index e968b0df5..11b96afa6 100644 --- a/src/ace_time/internal/ZoneContext.inc +++ b/src/ace_time/internal/ZoneContext.inc @@ -8,6 +8,15 @@ * to this. */ struct ZoneContext { + /** Represents 'w' or wall time. */ + static const uint8_t TIME_MODIFIER_W = 0x00; + + /** Represents 's' or standard time. */ + static const uint8_t TIME_MODIFIER_S = 0x10; + + /** Represents 'u' or UTC time. */ + static const uint8_t TIME_MODIFIER_U = 0x20; + /* * Epoch year. Currently always 2000 but could change in the future. We're * leaving this out for now because it's not clear how or if the various diff --git a/src/ace_time/internal/ZonePolicy.h b/src/ace_time/internal/ZonePolicy.h index 6bddd2fb5..6a1ffa1b7 100644 --- a/src/ace_time/internal/ZonePolicy.h +++ b/src/ace_time/internal/ZonePolicy.h @@ -7,6 +7,7 @@ #define ACE_TIME_ZONE_POLICY_H #include +#include "ZoneContext.h" namespace ace_time { diff --git a/tests/BasicZoneProcessorTest/BasicZoneProcessorTest.ino b/tests/BasicZoneProcessorTest/BasicZoneProcessorTest.ino index 072201d28..7803ccd67 100644 --- a/tests/BasicZoneProcessorTest/BasicZoneProcessorTest.ino +++ b/tests/BasicZoneProcessorTest/BasicZoneProcessorTest.ino @@ -79,9 +79,12 @@ test(BasicZoneProcessorTest, calcStartDayOfMonth) { } test(BasicZoneProcessorTest, calcRuleOffsetCode) { - assertEqual(0, BasicZoneProcessor::calcRuleOffsetCode(1, 2, 'u')); - assertEqual(1, BasicZoneProcessor::calcRuleOffsetCode(1, 2, 'w')); - assertEqual(2, BasicZoneProcessor::calcRuleOffsetCode(1, 2, 's')); + assertEqual(0, BasicZoneProcessor::calcRuleOffsetCode(1, 2, + basic::ZoneContext::TIME_MODIFIER_U)); + assertEqual(1, BasicZoneProcessor::calcRuleOffsetCode(1, 2, + basic::ZoneContext::TIME_MODIFIER_W)); + assertEqual(2, BasicZoneProcessor::calcRuleOffsetCode(1, 2, + basic::ZoneContext::TIME_MODIFIER_S)); } test(BasicZoneProcessorTest, init_primitives) { @@ -303,9 +306,9 @@ test(BasicZoneProcessorTest, kZoneAmerica_Los_Angeles_outOfBounds) { void setup() { #if defined(ARDUINO) - delay(1000); // wait for stability on some boards to prevent garbage SERIAL_PORT_MONITOR + delay(1000); // wait for stability to prevent garbage on SERIAL_PORT_MONITOR #endif - SERIAL_PORT_MONITOR.begin(115200); // ESP8266 default of 74880 not supported on Linux + SERIAL_PORT_MONITOR.begin(115200); while(!SERIAL_PORT_MONITOR); // for the Arduino Leonardo/Micro only } diff --git a/tests/ExtendedZoneProcessorTest/ExtendedZoneProcessorTest.ino b/tests/ExtendedZoneProcessorTest/ExtendedZoneProcessorTest.ino index f2d65ac93..f371282c3 100644 --- a/tests/ExtendedZoneProcessorTest/ExtendedZoneProcessorTest.ino +++ b/tests/ExtendedZoneProcessorTest/ExtendedZoneProcessorTest.ino @@ -29,7 +29,7 @@ static const ZoneEra kZoneEraAlmostLosAngeles[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 10 /*untilDay*/, 2*4 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/ + ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/ }, { nullptr, @@ -40,7 +40,7 @@ static const ZoneEra kZoneEraAlmostLosAngeles[] ACE_TIME_PROGMEM = { 11 /*untilMonth*/, 3 /*untilDay*/, 2*4 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/ + ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/ }, { nullptr, @@ -51,7 +51,7 @@ static const ZoneEra kZoneEraAlmostLosAngeles[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 8 /*untilDay*/, 2*4 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/ + ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/ }, }; @@ -77,7 +77,7 @@ static const ZoneRule kZoneRulesTestUS[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -89,7 +89,7 @@ static const ZoneRule kZoneRulesTestUS[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -101,7 +101,7 @@ static const ZoneRule kZoneRulesTestUS[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -113,7 +113,7 @@ static const ZoneRule kZoneRulesTestUS[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -125,7 +125,7 @@ static const ZoneRule kZoneRulesTestUS[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -150,7 +150,7 @@ static const ZoneEra kZoneEraTestLos_Angeles[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -173,7 +173,7 @@ test(ExtendedZoneProcessorTest, tzVersion) { } static const ZoneEra era ACE_TIME_PROGMEM = - {nullptr, "", 0, 0, 0, 1, 2, 12, 'w'}; + {nullptr, "", 0, 0, 0, 1, 2, 12, ZoneContext::TIME_MODIFIER_W}; test(ExtendedZoneProcessorTest, compareEraToYearMonth) { assertEqual(1, ExtendedZoneProcessor::compareEraToYearMonth( @@ -187,7 +187,7 @@ test(ExtendedZoneProcessorTest, compareEraToYearMonth) { } static const ZoneEra era2 ACE_TIME_PROGMEM = - {nullptr, "", 0, 0, 0, 1, 0, 0, 'w'}; + {nullptr, "", 0, 0, 0, 1, 0, 0, ZoneContext::TIME_MODIFIER_W}; test(ExtendedZoneProcessorTest, compareEraToYearMonth2) { assertEqual(0, ExtendedZoneProcessor::compareEraToYearMonth( @@ -196,11 +196,11 @@ test(ExtendedZoneProcessorTest, compareEraToYearMonth2) { // UNTIL = 2000-01-02 3:00 static const ZoneEra prev ACE_TIME_PROGMEM = - {nullptr, "", 0, 0, 0, 1, 2, 3, 'w'}; + {nullptr, "", 0, 0, 0, 1, 2, 3, ZoneContext::TIME_MODIFIER_W}; // UNTIL = 2002-03-04 5:00 static const ZoneEra era3 ACE_TIME_PROGMEM = - {nullptr, "", 0, 0, 2, 3, 4, 5, 'w'}; + {nullptr, "", 0, 0, 2, 3, 4, 5, ZoneContext::TIME_MODIFIER_W}; test(ExtendedZoneProcessorTest, createMatch) { YearMonthTuple startYm = {0, 12}; @@ -208,8 +208,10 @@ test(ExtendedZoneProcessorTest, createMatch) { ZoneMatch match = ExtendedZoneProcessor::createMatch( extended::ZoneEraBroker(&prev), extended::ZoneEraBroker(&era3), startYm, untilYm); - assertTrue((match.startDateTime == DateTuple{0, 12, 1, 0, 'w'})); - assertTrue((match.untilDateTime == DateTuple{1, 2, 1, 0, 'w'})); + assertTrue((match.startDateTime == DateTuple{0, 12, 1, 0, + ZoneContext::TIME_MODIFIER_W})); + assertTrue((match.untilDateTime == DateTuple{1, 2, 1, 0, + ZoneContext::TIME_MODIFIER_W})); assertTrue(&era3 == match.era.zoneEra()); startYm = {-1, 12}; @@ -217,8 +219,10 @@ test(ExtendedZoneProcessorTest, createMatch) { match = ExtendedZoneProcessor::createMatch( extended::ZoneEraBroker(&prev), extended::ZoneEraBroker(&era3), startYm, untilYm); - assertTrue((match.startDateTime == DateTuple{0, 1, 2, 3, 'w'})); - assertTrue((match.untilDateTime == DateTuple{2, 3, 4, 5, 'w'})); + assertTrue((match.startDateTime == DateTuple{0, 1, 2, 3, + ZoneContext::TIME_MODIFIER_W})); + assertTrue((match.untilDateTime == DateTuple{2, 3, 4, 5, + ZoneContext::TIME_MODIFIER_W})); assertTrue(&era3 == match.era.zoneEra()); } @@ -232,16 +236,22 @@ test(ExtendedZoneProcessorTest, findMatches_simple) { matches, kMaxMaches); assertEqual(3, numMatches); - assertTrue((matches[0].startDateTime == DateTuple{18, 12, 1, 0, 'w'})); - assertTrue((matches[0].untilDateTime == DateTuple{19, 3, 10, 8, 'w'})); + assertTrue((matches[0].startDateTime == DateTuple{18, 12, 1, 0, + ZoneContext::TIME_MODIFIER_W})); + assertTrue((matches[0].untilDateTime == DateTuple{19, 3, 10, 8, + ZoneContext::TIME_MODIFIER_W})); assertTrue(&kZoneEraAlmostLosAngeles[0] == matches[0].era.zoneEra()); - assertTrue((matches[1].startDateTime == DateTuple{19, 3, 10, 8, 'w'})); - assertTrue((matches[1].untilDateTime == DateTuple{19, 11, 3, 8, 'w'})); + assertTrue((matches[1].startDateTime == DateTuple{19, 3, 10, 8, + ZoneContext::TIME_MODIFIER_W})); + assertTrue((matches[1].untilDateTime == DateTuple{19, 11, 3, 8, + ZoneContext::TIME_MODIFIER_W})); assertTrue(&kZoneEraAlmostLosAngeles[1] == matches[1].era.zoneEra()); - assertTrue((matches[2].startDateTime == DateTuple{19, 11, 3, 8, 'w'})); - assertTrue((matches[2].untilDateTime == DateTuple{20, 2, 1, 0, 'w'})); + assertTrue((matches[2].startDateTime == DateTuple{19, 11, 3, 8, + ZoneContext::TIME_MODIFIER_W})); + assertTrue((matches[2].untilDateTime == DateTuple{20, 2, 1, 0, + ZoneContext::TIME_MODIFIER_W})); assertTrue(&kZoneEraAlmostLosAngeles[2] == matches[2].era.zoneEra()); } @@ -255,59 +265,66 @@ test(ExtendedZoneProcessorTest, findMatches_named) { matches, kMaxMaches); assertEqual(1, numMatches); - assertTrue((matches[0].startDateTime == DateTuple{18, 12, 1, 0, 'w'})); - assertTrue((matches[0].untilDateTime == DateTuple{20, 2, 1, 0, 'w'})); + assertTrue((matches[0].startDateTime == DateTuple{18, 12, 1, 0, + ZoneContext::TIME_MODIFIER_W})); + assertTrue((matches[0].untilDateTime == DateTuple{20, 2, 1, 0, + ZoneContext::TIME_MODIFIER_W})); assertTrue(&kZoneEraTestLos_Angeles[0] == matches[0].era.zoneEra()); } test(ExtendedZoneProcessorTest, getTransitionTime) { // Nov Sun>=1 const auto rule = extended::ZoneRuleBroker(&kZoneRulesTestUS[4]); + + // Nov 4 2018 DateTuple dt = ExtendedZoneProcessor::getTransitionTime(18, rule); - assertTrue((dt == DateTuple{18, 11, 4, 8, 'w'})); // Nov 4 2018 + assertTrue((dt == DateTuple{18, 11, 4, 8, ZoneContext::TIME_MODIFIER_W})); + + // Nov 3 2019 dt = ExtendedZoneProcessor::getTransitionTime(19, rule); - assertTrue((dt == DateTuple{19, 11, 3, 8, 'w'})); // Nov 3 2019 + assertTrue((dt == DateTuple{19, 11, 3, 8, ZoneContext::TIME_MODIFIER_W})); } test(ExtendedZoneProcessorTest, createTransitionForYear) { const ZoneMatch match = { - {18, 12, 1, 0, 'w'}, - {20, 2, 1, 0, 'w'}, + {18, 12, 1, 0, ZoneContext::TIME_MODIFIER_W}, + {20, 2, 1, 0, ZoneContext::TIME_MODIFIER_W}, extended::ZoneEraBroker(&kZoneEraTestLos_Angeles[0]) }; // Nov Sun>=1 const auto rule = extended::ZoneRuleBroker(&kZoneRulesTestUS[4]); Transition t; ExtendedZoneProcessor::createTransitionForYear(&t, 19, rule, &match); - assertTrue((t.transitionTime == DateTuple{19, 11, 3, 8, 'w'})); + assertTrue((t.transitionTime == DateTuple{19, 11, 3, 8, + ZoneContext::TIME_MODIFIER_W})); } test(ExtendedZoneProcessorTest, normalizeDateTuple) { DateTuple dtp; - dtp = {0, 1, 1, 0, 'w'}; + dtp = {0, 1, 1, 0, ZoneContext::TIME_MODIFIER_W}; ExtendedZoneProcessor::normalizeDateTuple(&dtp); - assertTrue((dtp == DateTuple{0, 1, 1, 0, 'w'})); + assertTrue((dtp == DateTuple{0, 1, 1, 0, ZoneContext::TIME_MODIFIER_W})); - dtp = {0, 1, 1, 95, 'w'}; + dtp = {0, 1, 1, 95, ZoneContext::TIME_MODIFIER_W}; ExtendedZoneProcessor::normalizeDateTuple(&dtp); - assertTrue((dtp == DateTuple{0, 1, 1, 95, 'w'})); + assertTrue((dtp == DateTuple{0, 1, 1, 95, ZoneContext::TIME_MODIFIER_W})); - dtp = {0, 1, 1, 96, 'w'}; + dtp = {0, 1, 1, 96, ZoneContext::TIME_MODIFIER_W}; ExtendedZoneProcessor::normalizeDateTuple(&dtp); - assertTrue((dtp == DateTuple{0, 1, 2, 0, 'w'})); + assertTrue((dtp == DateTuple{0, 1, 2, 0, ZoneContext::TIME_MODIFIER_W})); - dtp = {0, 1, 1, 97, 'w'}; + dtp = {0, 1, 1, 97, ZoneContext::TIME_MODIFIER_W}; ExtendedZoneProcessor::normalizeDateTuple(&dtp); - assertTrue((dtp == DateTuple{0, 1, 2, 1, 'w'})); + assertTrue((dtp == DateTuple{0, 1, 2, 1, ZoneContext::TIME_MODIFIER_W})); - dtp = {0, 1, 1, -96, 'w'}; + dtp = {0, 1, 1, -96, ZoneContext::TIME_MODIFIER_W}; ExtendedZoneProcessor::normalizeDateTuple(&dtp); - assertTrue((dtp == DateTuple{-01, 12, 31, 0, 'w'})); + assertTrue((dtp == DateTuple{-01, 12, 31, 0, ZoneContext::TIME_MODIFIER_W})); - dtp = {0, 1, 1, -97, 'w'}; + dtp = {0, 1, 1, -97, ZoneContext::TIME_MODIFIER_W}; ExtendedZoneProcessor::normalizeDateTuple(&dtp); - assertTrue((dtp == DateTuple{-01, 12, 31, -1, 'w'})); + assertTrue((dtp == DateTuple{-01, 12, 31, -1, ZoneContext::TIME_MODIFIER_W})); } test(ExtendedZoneProcessorTest, expandDateTuple) { @@ -317,26 +334,26 @@ test(ExtendedZoneProcessorTest, expandDateTuple) { int8_t offsetCode = 8; int8_t deltaCode = 4; - tt = {0, 1, 30, 12, 'w'}; + tt = {0, 1, 30, 12, ZoneContext::TIME_MODIFIER_W}; ExtendedZoneProcessor::expandDateTuple(&tt, &tts, &ttu, offsetCode, deltaCode); - assertTrue((tt == DateTuple{0, 1, 30, 12, 'w'})); - assertTrue((tts == DateTuple{0, 1, 30, 8, 's'})); - assertTrue((ttu == DateTuple{0, 1, 30, 0, 'u'})); + assertTrue((tt == DateTuple{0, 1, 30, 12, ZoneContext::TIME_MODIFIER_W})); + assertTrue((tts == DateTuple{0, 1, 30, 8, ZoneContext::TIME_MODIFIER_S})); + assertTrue((ttu == DateTuple{0, 1, 30, 0, ZoneContext::TIME_MODIFIER_U})); - tt = {0, 1, 30, 8, 's'}; + tt = {0, 1, 30, 8, ZoneContext::TIME_MODIFIER_S}; ExtendedZoneProcessor::expandDateTuple(&tt, &tts, &ttu, offsetCode, deltaCode); - assertTrue((tt == DateTuple{0, 1, 30, 12, 'w'})); - assertTrue((tts == DateTuple{0, 1, 30, 8, 's'})); - assertTrue((ttu == DateTuple{0, 1, 30, 0, 'u'})); + assertTrue((tt == DateTuple{0, 1, 30, 12, ZoneContext::TIME_MODIFIER_W})); + assertTrue((tts == DateTuple{0, 1, 30, 8, ZoneContext::TIME_MODIFIER_S})); + assertTrue((ttu == DateTuple{0, 1, 30, 0, ZoneContext::TIME_MODIFIER_U})); - tt = {0, 1, 30, 0, 'u'}; + tt = {0, 1, 30, 0, ZoneContext::TIME_MODIFIER_U}; ExtendedZoneProcessor::expandDateTuple(&tt, &tts, &ttu, offsetCode, deltaCode); - assertTrue((tt == DateTuple{0, 1, 30, 12, 'w'})); - assertTrue((tts == DateTuple{0, 1, 30, 8, 's'})); - assertTrue((ttu == DateTuple{0, 1, 30, 0, 'u'})); + assertTrue((tt == DateTuple{0, 1, 30, 12, ZoneContext::TIME_MODIFIER_W})); + assertTrue((tts == DateTuple{0, 1, 30, 8, ZoneContext::TIME_MODIFIER_S})); + assertTrue((ttu == DateTuple{0, 1, 30, 0, ZoneContext::TIME_MODIFIER_U})); } test(ExtendedZoneProcessorTest, calcInteriorYears) { @@ -401,14 +418,14 @@ test(ExtendedZoneProcessorTest, compareTransitionToMatchFuzzy) { const DateTuple EMPTY_DATE = { 0, 0, 0, 0, 0}; const ZoneMatch match = { - {0, 1, 1, 0, 'w'} /* startDateTime */, - {1, 1, 1, 0, 'w'} /* untilDateTime */, + {0, 1, 1, 0, ZoneContext::TIME_MODIFIER_W} /* startDateTime */, + {1, 1, 1, 0, ZoneContext::TIME_MODIFIER_W} /* untilDateTime */, extended::ZoneEraBroker(nullptr) }; Transition transition = { &match /*match*/, extended::ZoneRuleBroker(nullptr) /*rule*/, - {-1, 11, 1, 0, 'w'} /*transitionTime*/, + {-1, 11, 1, 0, ZoneContext::TIME_MODIFIER_W} /*transitionTime*/, EMPTY_DATE, EMPTY_DATE, EMPTY_DATE, 0, {0}, {0}, false, 0, 0 }; assertEqual(-1, ExtendedZoneProcessor::compareTransitionToMatchFuzzy( @@ -416,7 +433,7 @@ test(ExtendedZoneProcessorTest, compareTransitionToMatchFuzzy) { transition = { &match /*match*/, extended::ZoneRuleBroker(nullptr) /*rule*/, - {-1, 12, 1, 0, 'w'} /*transitionTime*/, + {-1, 12, 1, 0, ZoneContext::TIME_MODIFIER_W} /*transitionTime*/, EMPTY_DATE, EMPTY_DATE, EMPTY_DATE, 0, {0}, {0}, false, 0, 0 }; assertEqual(1, ExtendedZoneProcessor::compareTransitionToMatchFuzzy( @@ -424,7 +441,7 @@ test(ExtendedZoneProcessorTest, compareTransitionToMatchFuzzy) { transition = { &match /*match*/, extended::ZoneRuleBroker(nullptr) /*rule*/, - {0, 1, 1, 0, 'w'} /*transitionTime*/, + {0, 1, 1, 0, ZoneContext::TIME_MODIFIER_W} /*transitionTime*/, EMPTY_DATE, EMPTY_DATE, EMPTY_DATE, 0, {0}, {0}, false, 0, 0 }; assertEqual(1, ExtendedZoneProcessor::compareTransitionToMatchFuzzy( @@ -432,7 +449,7 @@ test(ExtendedZoneProcessorTest, compareTransitionToMatchFuzzy) { transition = { &match /*match*/, extended::ZoneRuleBroker(nullptr) /*rule*/, - {1, 1, 1, 0, 'w'} /*transitionTime*/, + {1, 1, 1, 0, ZoneContext::TIME_MODIFIER_W} /*transitionTime*/, EMPTY_DATE, EMPTY_DATE, EMPTY_DATE, 0, {0}, {0}, false, 0, 0 }; assertEqual(1, ExtendedZoneProcessor::compareTransitionToMatchFuzzy( @@ -440,7 +457,7 @@ test(ExtendedZoneProcessorTest, compareTransitionToMatchFuzzy) { transition = { &match /*match*/, extended::ZoneRuleBroker(nullptr) /*rule*/, - {1, 2, 1, 0, 'w'} /*transitionTime*/, + {1, 2, 1, 0, ZoneContext::TIME_MODIFIER_W} /*transitionTime*/, EMPTY_DATE, EMPTY_DATE, EMPTY_DATE, 0, {0}, {0}, false, 0, 0 }; assertEqual(1, ExtendedZoneProcessor::compareTransitionToMatchFuzzy( @@ -448,7 +465,7 @@ test(ExtendedZoneProcessorTest, compareTransitionToMatchFuzzy) { transition = { &match /*match*/, extended::ZoneRuleBroker(nullptr) /*rule*/, - {1, 3, 1, 0, 'w'} /*transitionTime*/, + {1, 3, 1, 0, ZoneContext::TIME_MODIFIER_W} /*transitionTime*/, EMPTY_DATE, EMPTY_DATE, EMPTY_DATE, 0, {0}, {0}, false, 0, 0 }; assertEqual(2, ExtendedZoneProcessor::compareTransitionToMatchFuzzy( @@ -460,14 +477,14 @@ test(ExtendedZoneProcessorTest, compareTransitionToMatch) { const DateTuple EMPTY_DATE = { 0, 0, 0, 0, 0}; const ZoneMatch match = { - {0, 1, 1, 0, 'w'} /*startDateTime*/, - {1, 1, 1, 0, 'w'} /*untilDateTime*/, + {0, 1, 1, 0, ZoneContext::TIME_MODIFIER_W} /*startDateTime*/, + {1, 1, 1, 0, ZoneContext::TIME_MODIFIER_W} /*untilDateTime*/, extended::ZoneEraBroker(nullptr) /*era*/ }; Transition transition = { &match /*match*/, extended::ZoneRuleBroker(nullptr) /*rule*/, - {-1, 12, 31, 0, 'w'} /*transitionTime*/, + {-1, 12, 31, 0, ZoneContext::TIME_MODIFIER_W} /*transitionTime*/, EMPTY_DATE, EMPTY_DATE, EMPTY_DATE, 0, {0}, {0}, false, 0, 0 }; assertEqual(-1, ExtendedZoneProcessor::compareTransitionToMatch( @@ -475,7 +492,7 @@ test(ExtendedZoneProcessorTest, compareTransitionToMatch) { transition = { &match /*match*/, extended::ZoneRuleBroker(nullptr) /*rule*/, - {0, 1, 1, 0, 'w'} /*transitionTime*/, + {0, 1, 1, 0, ZoneContext::TIME_MODIFIER_W} /*transitionTime*/, EMPTY_DATE, EMPTY_DATE, EMPTY_DATE, 0, {0}, {0}, false, 0, 0 }; assertEqual(0, ExtendedZoneProcessor::compareTransitionToMatch( @@ -483,7 +500,7 @@ test(ExtendedZoneProcessorTest, compareTransitionToMatch) { transition = { &match /*match*/, extended::ZoneRuleBroker(nullptr) /*rule*/, - {0, 1, 2, 0, 'w'} /*transitionTime*/, + {0, 1, 2, 0, ZoneContext::TIME_MODIFIER_W} /*transitionTime*/, EMPTY_DATE, EMPTY_DATE, EMPTY_DATE, 0, {0}, {0}, false, 0, 0 }; assertEqual(1, ExtendedZoneProcessor::compareTransitionToMatch( @@ -491,7 +508,7 @@ test(ExtendedZoneProcessorTest, compareTransitionToMatch) { transition = { &match /*match*/, extended::ZoneRuleBroker(nullptr) /*rule*/, - {1, 1, 2, 0, 'w'} /*transitionTime*/, + {1, 1, 2, 0, ZoneContext::TIME_MODIFIER_W} /*transitionTime*/, EMPTY_DATE, EMPTY_DATE, EMPTY_DATE, 0, {0}, {0}, false, 0, 0 }; assertEqual(2, ExtendedZoneProcessor::compareTransitionToMatch( @@ -503,15 +520,15 @@ test(ExtendedZoneProcessorTest, processActiveTransition) { Transition* prior = nullptr; const ZoneMatch match = { - {0, 1, 1, 0, 'w'} /*startDateTime*/, - {1, 1, 1, 0, 'w'} /*untilDateTime*/, + {0, 1, 1, 0, ZoneContext::TIME_MODIFIER_W} /*startDateTime*/, + {1, 1, 1, 0, ZoneContext::TIME_MODIFIER_W} /*untilDateTime*/, extended::ZoneEraBroker(nullptr) /*era*/ }; // This transition occurs before the match, so prior should be filled. Transition transition0 = { &match /*match*/, extended::ZoneRuleBroker(nullptr) /*rule*/, - {-1, 12, 31, 0, 'w'} /*transitionTime*/, + {-1, 12, 31, 0, ZoneContext::TIME_MODIFIER_W} /*transitionTime*/, EMPTY_DATE, EMPTY_DATE, EMPTY_DATE, 0, {0}, {0}, false, 0, 0 }; ExtendedZoneProcessor::processActiveTransition(&match, &transition0, &prior); @@ -521,7 +538,7 @@ test(ExtendedZoneProcessorTest, processActiveTransition) { // This occurs at exactly match.startDateTime, so should replace Transition transition1 = { &match /*match*/, extended::ZoneRuleBroker(nullptr) /*rule*/, - {0, 1, 1, 0, 'w'} /*transitionTime*/, + {0, 1, 1, 0, ZoneContext::TIME_MODIFIER_W} /*transitionTime*/, EMPTY_DATE, EMPTY_DATE, EMPTY_DATE, 0, {0}, {0}, false, 0, 0 }; ExtendedZoneProcessor::processActiveTransition(&match, &transition1, &prior); @@ -531,7 +548,7 @@ test(ExtendedZoneProcessorTest, processActiveTransition) { // An interior transition. Prior should not change. Transition transition2 = { &match /*match*/, extended::ZoneRuleBroker(nullptr) /*rule*/, - {0, 1, 2, 0, 'w'} /*transitionTime*/, + {0, 1, 2, 0, ZoneContext::TIME_MODIFIER_W} /*transitionTime*/, EMPTY_DATE, EMPTY_DATE, EMPTY_DATE, 0, {0}, {0}, false, 0, 0 }; ExtendedZoneProcessor::processActiveTransition(&match, &transition2, &prior); @@ -541,7 +558,7 @@ test(ExtendedZoneProcessorTest, processActiveTransition) { // Occurs after match.untilDateTime, so should be rejected. Transition transition3 = { &match /*match*/, extended::ZoneRuleBroker(nullptr) /*rule*/, - {1, 1, 2, 0, 'w'} /*transitionTime*/, + {1, 1, 2, 0, ZoneContext::TIME_MODIFIER_W} /*transitionTime*/, EMPTY_DATE, EMPTY_DATE, EMPTY_DATE, 0, {0}, {0}, false, 0, 0 }; assertFalse(transition3.active); @@ -550,8 +567,8 @@ test(ExtendedZoneProcessorTest, processActiveTransition) { test(ExtendedZoneProcessorTest, findCandidateTransitions) { const ZoneMatch match = { - {18, 12, 1, 0, 'w'}, - {20, 2, 1, 0, 'w'}, + {18, 12, 1, 0, ZoneContext::TIME_MODIFIER_W}, + {20, 2, 1, 0, ZoneContext::TIME_MODIFIER_W}, extended::ZoneEraBroker(&kZoneEraTestLos_Angeles[0]) }; @@ -572,17 +589,22 @@ test(ExtendedZoneProcessorTest, findCandidateTransitions) { assertEqual(5, (int) (storage.getCandidatePoolEnd() - storage.getCandidatePoolBegin())); Transition** t = storage.getCandidatePoolBegin(); - assertTrue(((*t++)->transitionTime == DateTuple{18, 3, 11, 8, 'w'})); - assertTrue(((*t++)->transitionTime == DateTuple{18, 11, 4, 8, 'w'})); - assertTrue(((*t++)->transitionTime == DateTuple{19, 3, 10, 8, 'w'})); - assertTrue(((*t++)->transitionTime == DateTuple{19, 11, 3, 8, 'w'})); - assertTrue(((*t++)->transitionTime == DateTuple{20, 3, 8, 8, 'w'})); + assertTrue(((*t++)->transitionTime == DateTuple{18, 3, 11, 8, + ZoneContext::TIME_MODIFIER_W})); + assertTrue(((*t++)->transitionTime == DateTuple{18, 11, 4, 8, + ZoneContext::TIME_MODIFIER_W})); + assertTrue(((*t++)->transitionTime == DateTuple{19, 3, 10, 8, + ZoneContext::TIME_MODIFIER_W})); + assertTrue(((*t++)->transitionTime == DateTuple{19, 11, 3, 8, + ZoneContext::TIME_MODIFIER_W})); + assertTrue(((*t++)->transitionTime == DateTuple{20, 3, 8, 8, + ZoneContext::TIME_MODIFIER_W})); } test(ExtendedZoneProcessorTest, findTransitionsFromNamedMatch) { const ZoneMatch match = { - {18, 12, 1, 0, 'w'}, - {20, 2, 1, 0, 'w'}, + {18, 12, 1, 0, ZoneContext::TIME_MODIFIER_W}, + {20, 2, 1, 0, ZoneContext::TIME_MODIFIER_W}, extended::ZoneEraBroker(&kZoneEraTestLos_Angeles[0]) }; @@ -595,9 +617,12 @@ test(ExtendedZoneProcessorTest, findTransitionsFromNamedMatch) { assertEqual(3, (int) (storage.getActivePoolEnd() - storage.getActivePoolBegin())); Transition** t = storage.getActivePoolBegin(); - assertTrue(((*t++)->transitionTime == DateTuple{18, 12, 1, 0, 'w'})); - assertTrue(((*t++)->transitionTime == DateTuple{19, 3, 10, 8, 'w'})); - assertTrue(((*t++)->transitionTime == DateTuple{19, 11, 3, 8, 'w'})); + assertTrue(((*t++)->transitionTime == DateTuple{18, 12, 1, 0, + ZoneContext::TIME_MODIFIER_W})); + assertTrue(((*t++)->transitionTime == DateTuple{19, 3, 10, 8, + ZoneContext::TIME_MODIFIER_W})); + assertTrue(((*t++)->transitionTime == DateTuple{19, 11, 3, 8, + ZoneContext::TIME_MODIFIER_W})); } test(ExtendedZoneProcessorTest, fixTransitionTimes_generateStartUntilTimes) { @@ -650,44 +675,62 @@ test(ExtendedZoneProcessorTest, fixTransitionTimes_generateStartUntilTimes) { ExtendedZoneProcessor::fixTransitionTimes(begin, end); // Verify. The first Transition is extended to -infinity. - assertTrue((transition1->transitionTime == DateTuple{18, 12, 1, 0, 'w'})); - assertTrue((transition1->transitionTimeS == DateTuple{18, 12, 1, 0, 's'})); - assertTrue((transition1->transitionTimeU == DateTuple{18, 12, 1, 32, 'u'})); + assertTrue((transition1->transitionTime == DateTuple{18, 12, 1, 0, + ZoneContext::TIME_MODIFIER_W})); + assertTrue((transition1->transitionTimeS == DateTuple{18, 12, 1, 0, + ZoneContext::TIME_MODIFIER_S})); + assertTrue((transition1->transitionTimeU == DateTuple{18, 12, 1, 32, + ZoneContext::TIME_MODIFIER_U})); // Second transition uses the UTC offset of the first. - assertTrue((transition2->transitionTime == DateTuple{19, 3, 10, 8, 'w'})); - assertTrue((transition2->transitionTimeS == DateTuple{19, 3, 10, 8, 's'})); - assertTrue((transition2->transitionTimeU == DateTuple{19, 3, 10, 40, 'u'})); + assertTrue((transition2->transitionTime == DateTuple{19, 3, 10, 8, + ZoneContext::TIME_MODIFIER_W})); + assertTrue((transition2->transitionTimeS == DateTuple{19, 3, 10, 8, + ZoneContext::TIME_MODIFIER_S})); + assertTrue((transition2->transitionTimeU == DateTuple{19, 3, 10, 40, + ZoneContext::TIME_MODIFIER_U})); // Third transition uses the UTC offset of the second. - assertTrue((transition3->transitionTime == DateTuple{19, 11, 3, 8, 'w'})); - assertTrue((transition3->transitionTimeS == DateTuple{19, 11, 3, 4, 's'})); - assertTrue((transition3->transitionTimeU == DateTuple{19, 11, 3, 36, 'u'})); + assertTrue((transition3->transitionTime == DateTuple{19, 11, 3, 8, + ZoneContext::TIME_MODIFIER_W})); + assertTrue((transition3->transitionTimeS == DateTuple{19, 11, 3, 4, + ZoneContext::TIME_MODIFIER_S})); + assertTrue((transition3->transitionTimeU == DateTuple{19, 11, 3, 36, + ZoneContext::TIME_MODIFIER_U})); // Generate the startDateTime and untilDateTime of the transitions. ExtendedZoneProcessor::generateStartUntilTimes(begin, end); // Verify. The first transition startTime should be the same as its // transitionTime. - assertTrue((transition1->transitionTime == DateTuple{18, 12, 1, 0, 'w'})); - assertTrue((transition1->startDateTime == DateTuple{18, 12, 1, 0, 'w'})); - assertTrue((transition1->untilDateTime == DateTuple{19, 3, 10, 8, 'w'})); + assertTrue((transition1->transitionTime == DateTuple{18, 12, 1, 0, + ZoneContext::TIME_MODIFIER_W})); + assertTrue((transition1->startDateTime == DateTuple{18, 12, 1, 0, + ZoneContext::TIME_MODIFIER_W})); + assertTrue((transition1->untilDateTime == DateTuple{19, 3, 10, 8, + ZoneContext::TIME_MODIFIER_W})); acetime_t epochSecs = OffsetDateTime::forComponents( 2018, 12, 1, 0, 0, 0, TimeOffset::forHour(-8)).toEpochSeconds(); assertEqual(epochSecs, transition1->startEpochSeconds); // Second transition startTime is shifted forward one hour into PDT. - assertTrue((transition2->transitionTime == DateTuple{19, 3, 10, 8, 'w'})); - assertTrue((transition2->startDateTime == DateTuple{19, 3, 10, 12, 'w'})); - assertTrue((transition2->untilDateTime == DateTuple{19, 11, 3, 8, 'w'})); + assertTrue((transition2->transitionTime == DateTuple{19, 3, 10, 8, + ZoneContext::TIME_MODIFIER_W})); + assertTrue((transition2->startDateTime == DateTuple{19, 3, 10, 12, + ZoneContext::TIME_MODIFIER_W})); + assertTrue((transition2->untilDateTime == DateTuple{19, 11, 3, 8, + ZoneContext::TIME_MODIFIER_W})); epochSecs = OffsetDateTime::forComponents( 2019, 3, 10, 3, 0, 0, TimeOffset::forHour(-7)).toEpochSeconds(); assertEqual(epochSecs, transition2->startEpochSeconds); // Third transition startTime is shifted back one hour into PST. - assertTrue((transition3->transitionTime == DateTuple{19, 11, 3, 8, 'w'})); - assertTrue((transition3->startDateTime == DateTuple{19, 11, 3, 4, 'w'})); - assertTrue((transition3->untilDateTime == DateTuple{20, 2, 1, 0, 'w'})); + assertTrue((transition3->transitionTime == DateTuple{19, 11, 3, 8, + ZoneContext::TIME_MODIFIER_W})); + assertTrue((transition3->startDateTime == DateTuple{19, 11, 3, 4, + ZoneContext::TIME_MODIFIER_W})); + assertTrue((transition3->untilDateTime == DateTuple{20, 2, 1, 0, + ZoneContext::TIME_MODIFIER_W})); epochSecs = OffsetDateTime::forComponents( 2019, 11, 3, 1, 0, 0, TimeOffset::forHour(-8)).toEpochSeconds(); assertEqual(epochSecs, transition3->startEpochSeconds); @@ -753,9 +796,9 @@ test(ExtendedZoneProcessorTest, setZoneInfo) { void setup() { #if defined(ARDUINO) - delay(1000); // wait for stability on some boards to prevent garbage SERIAL_PORT_MONITOR + delay(1000); // wait for stability to prevent garbage on SERIAL_PORT_MONITOR #endif - SERIAL_PORT_MONITOR.begin(115200); // ESP8266 default of 74880 not supported on Linux + SERIAL_PORT_MONITOR.begin(115200); while(!SERIAL_PORT_MONITOR); // for the Arduino Leonardo/Micro only #if 0 diff --git a/tests/TransitionStorageTest/TransitionStorageTest.ino b/tests/TransitionStorageTest/TransitionStorageTest.ino index 6e4938c94..95b2640ec 100644 --- a/tests/TransitionStorageTest/TransitionStorageTest.ino +++ b/tests/TransitionStorageTest/TransitionStorageTest.ino @@ -120,21 +120,21 @@ test(TransitionStorageTest, addFreeAgentToCandidatePool) { // Verify that addFreeAgentToCandidatePool() does not touch prior transition Transition* freeAgent = storage.getFreeAgent(); - freeAgent->transitionTime = {0, 1, 2, 3, 'w'}; + freeAgent->transitionTime = {0, 1, 2, 3, ZoneContext::TIME_MODIFIER_W}; storage.addFreeAgentToCandidatePool(); assertEqual(0, storage.mIndexPrior); assertEqual(1, storage.mIndexCandidates); assertEqual(2, storage.mIndexFree); freeAgent = storage.getFreeAgent(); - freeAgent->transitionTime = {2, 3, 4, 5, 'w'}; + freeAgent->transitionTime = {2, 3, 4, 5, ZoneContext::TIME_MODIFIER_W}; storage.addFreeAgentToCandidatePool(); assertEqual(0, storage.mIndexPrior); assertEqual(1, storage.mIndexCandidates); assertEqual(3, storage.mIndexFree); freeAgent = storage.getFreeAgent(); - freeAgent->transitionTime = {1, 2, 3, 4, 'w'}; + freeAgent->transitionTime = {1, 2, 3, 4, ZoneContext::TIME_MODIFIER_W}; storage.addFreeAgentToCandidatePool(); assertEqual(0, storage.mIndexPrior); assertEqual(1, storage.mIndexCandidates); @@ -152,22 +152,22 @@ test(TransitionStorageTest, addActiveCandidatesToActivePool) { // create Prior to make it interesting Transition** prior = storage.reservePrior(); - (*prior)->transitionTime = {-1, 0, 1, 2, 'w'}; + (*prior)->transitionTime = {-1, 0, 1, 2, ZoneContext::TIME_MODIFIER_W}; (*prior)->active = true; // Add 3 transitions to Candidate pool, 2 active, 1 inactive. Transition* freeAgent = storage.getFreeAgent(); - freeAgent->transitionTime = {0, 1, 2, 3, 'w'}; + freeAgent->transitionTime = {0, 1, 2, 3, ZoneContext::TIME_MODIFIER_W}; freeAgent->active = true; storage.addFreeAgentToCandidatePool(); freeAgent = storage.getFreeAgent(); - freeAgent->transitionTime = {2, 3, 4, 5, 'w'}; + freeAgent->transitionTime = {2, 3, 4, 5, ZoneContext::TIME_MODIFIER_W}; freeAgent->active = true; storage.addFreeAgentToCandidatePool(); freeAgent = storage.getFreeAgent(); - freeAgent->transitionTime = {1, 2, 3, 4, 'w'}; + freeAgent->transitionTime = {1, 2, 3, 4, ZoneContext::TIME_MODIFIER_W}; freeAgent->active = false; storage.addFreeAgentToCandidatePool(); @@ -192,19 +192,19 @@ test(TransitionStorageTest, findTransition) { // Add 3 transitions to Candidate pool, 2 active, 1 inactive. Transition* freeAgent = storage.getFreeAgent(); - freeAgent->transitionTime = {0, 1, 2, 3, 'w'}; + freeAgent->transitionTime = {0, 1, 2, 3, ZoneContext::TIME_MODIFIER_W}; freeAgent->active = true; freeAgent->startEpochSeconds = 0; storage.addFreeAgentToCandidatePool(); freeAgent = storage.getFreeAgent(); - freeAgent->transitionTime = {1, 2, 3, 4, 'w'}; + freeAgent->transitionTime = {1, 2, 3, 4, ZoneContext::TIME_MODIFIER_W}; freeAgent->active = true; freeAgent->startEpochSeconds = 10; storage.addFreeAgentToCandidatePool(); freeAgent = storage.getFreeAgent(); - freeAgent->transitionTime = {2, 3, 4, 5, 'w'}; + freeAgent->transitionTime = {2, 3, 4, 5, ZoneContext::TIME_MODIFIER_W}; freeAgent->active = true; freeAgent->startEpochSeconds = 20; storage.addFreeAgentToCandidatePool(); @@ -233,7 +233,7 @@ test(TransitionStorageTest, resetCandidatePool) { // Add 2 transitions to Candidate pool, 2 active, 1 inactive. Transition* freeAgent = storage.getFreeAgent(); - freeAgent->transitionTime = {0, 1, 2, 3, 'w'}; + freeAgent->transitionTime = {0, 1, 2, 3, ZoneContext::TIME_MODIFIER_W}; freeAgent->active = true; storage.addFreeAgentToCandidatePool(); assertEqual(0, storage.mIndexPrior); @@ -241,7 +241,7 @@ test(TransitionStorageTest, resetCandidatePool) { assertEqual(1, storage.mIndexFree); freeAgent = storage.getFreeAgent(); - freeAgent->transitionTime = {2, 3, 4, 5, 'w'}; + freeAgent->transitionTime = {2, 3, 4, 5, ZoneContext::TIME_MODIFIER_W}; freeAgent->active = true; storage.addFreeAgentToCandidatePool(); assertEqual(0, storage.mIndexPrior); @@ -262,7 +262,7 @@ test(TransitionStorageTest, resetCandidatePool) { assertEqual(2, storage.mIndexFree); freeAgent = storage.getFreeAgent(); - freeAgent->transitionTime = {1, 2, 3, 4, 'w'}; + freeAgent->transitionTime = {1, 2, 3, 4, ZoneContext::TIME_MODIFIER_W}; freeAgent->active = false; storage.addFreeAgentToCandidatePool(); assertEqual(2, storage.mIndexPrior); @@ -280,9 +280,9 @@ test(TransitionStorageTest, resetCandidatePool) { void setup() { #if defined(ARDUINO) - delay(1000); // wait for stability on some boards to prevent garbage SERIAL_PORT_MONITOR + delay(1000); // wait for stability to prevent garbage on SERIAL_PORT_MONITOR #endif - SERIAL_PORT_MONITOR.begin(115200); // ESP8266 default of 74880 not supported on Linux + SERIAL_PORT_MONITOR.begin(115200); while(!SERIAL_PORT_MONITOR); // for the Arduino Leonardo/Micro only } diff --git a/tools/argenerator.py b/tools/argenerator.py index f50923567..778d97763 100644 --- a/tools/argenerator.py +++ b/tools/argenerator.py @@ -251,7 +251,7 @@ class ZonePoliciesGenerator: {onDayOfWeek} /*onDayOfWeek*/, {onDayOfMonth} /*onDayOfMonth*/, {atTimeCode} /*atTimeCode*/, - '{atTimeModifier}' /*atTimeModifier*/, + {atTimeModifier} /*atTimeModifier*/, {deltaCode} /*deltaCode*/, {letter} /*letter{letterComment}*/, }}, @@ -394,7 +394,7 @@ def _generate_policy_item(self, name, rules, indexed_letters): onDayOfWeek=rule.onDayOfWeek, onDayOfMonth=rule.onDayOfMonth, atTimeCode=at_time_code, - atTimeModifier=rule.atTimeModifier, + atTimeModifier=to_modifier(rule.atTimeModifier, self.scope), deltaCode=delta_code, letter=letter, letterComment=letterComment) @@ -628,7 +628,7 @@ class ZoneInfosGenerator: {untilMonth} /*untilMonth*/, {untilDay} /*untilDay*/, {untilTimeCode} /*untilTimeCode*/, - '{untilTimeModifier}' /*untilTimeModifier*/, + {untilTimeModifier} /*untilTimeModifier*/, }}, """ @@ -820,7 +820,7 @@ def _generate_era_item(self, zone_name, era): until_day = 1 until_time_code = div_to_zero(era.untilSecondsTruncated, 15 * 60) - until_time_modifier = era.untilTimeModifier + until_time_modifier = to_modifier(era.untilTimeModifier, self.scope) offset_code = div_to_zero(era.offsetSecondsTruncated, 15 * 60) # Replace %s with just a % for C++ @@ -1060,6 +1060,19 @@ def generate_registry_h(self): dbHeaderNamespace=self.db_header_namespace, numZones=len(self.zones_map)) +def to_modifier(modifier, scope): + """Return the C++ TIME_MODIFIER_{X} corresponding to the 'w', 's', and 'u' + modifier character in the TZ database files. + """ + if modifier == 'w': + return f'{scope}::ZoneContext::TIME_MODIFIER_W' + elif modifier == 's': + return f'{scope}::ZoneContext::TIME_MODIFIER_S' + elif modifier == 'u': + return f'{scope}::ZoneContext::TIME_MODIFIER_U' + else: + raise Exception(f'Unknown modifier {modifier}') + def to_tiny_year(year): if year == MAX_YEAR: return MAX_YEAR_TINY From 67e6d0fb84990d955344dce42dcbe6c655660744 Mon Sep 17 00:00:00 2001 From: Brian Park Date: Fri, 9 Aug 2019 08:27:09 -0700 Subject: [PATCH 07/55] zonedb: Regenerate zoneinfo files to use TIME_MODIFIER_{x} constants --- src/ace_time/zonedb/zone_infos.cpp | 566 +++---- src/ace_time/zonedb/zone_policies.cpp | 740 ++++----- src/ace_time/zonedbx/zone_infos.cpp | 1330 ++++++++--------- src/ace_time/zonedbx/zone_policies.cpp | 1054 ++++++------- .../zonedb2018g/zone_infos.cpp | 568 +++---- .../zonedb2018g/zone_policies.cpp | 712 ++++----- .../zonedbx2018g/zone_infos.cpp | 1320 ++++++++-------- .../zonedbx2018g/zone_policies.cpp | 944 ++++++------ 8 files changed, 3617 insertions(+), 3617 deletions(-) diff --git a/src/ace_time/zonedb/zone_infos.cpp b/src/ace_time/zonedb/zone_infos.cpp index e0dbae4df..327efa9ae 100644 --- a/src/ace_time/zonedb/zone_infos.cpp +++ b/src/ace_time/zonedb/zone_infos.cpp @@ -55,7 +55,7 @@ static const basic::ZoneEra kZoneEraAfrica_Abidjan[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -90,7 +90,7 @@ static const basic::ZoneEra kZoneEraAfrica_Accra[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -125,7 +125,7 @@ static const basic::ZoneEra kZoneEraAfrica_Algiers[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -160,7 +160,7 @@ static const basic::ZoneEra kZoneEraAfrica_Bissau[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -195,7 +195,7 @@ static const basic::ZoneEra kZoneEraAfrica_Ceuta[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -230,7 +230,7 @@ static const basic::ZoneEra kZoneEraAfrica_Johannesburg[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -265,7 +265,7 @@ static const basic::ZoneEra kZoneEraAfrica_Lagos[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -300,7 +300,7 @@ static const basic::ZoneEra kZoneEraAfrica_Maputo[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -335,7 +335,7 @@ static const basic::ZoneEra kZoneEraAfrica_Monrovia[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -370,7 +370,7 @@ static const basic::ZoneEra kZoneEraAfrica_Nairobi[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -405,7 +405,7 @@ static const basic::ZoneEra kZoneEraAfrica_Ndjamena[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -440,7 +440,7 @@ static const basic::ZoneEra kZoneEraAfrica_Tunis[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -475,7 +475,7 @@ static const basic::ZoneEra kZoneEraAmerica_Adak[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -510,7 +510,7 @@ static const basic::ZoneEra kZoneEraAmerica_Anchorage[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -545,7 +545,7 @@ static const basic::ZoneEra kZoneEraAmerica_Asuncion[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -580,7 +580,7 @@ static const basic::ZoneEra kZoneEraAmerica_Atikokan[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -615,7 +615,7 @@ static const basic::ZoneEra kZoneEraAmerica_Barbados[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -650,7 +650,7 @@ static const basic::ZoneEra kZoneEraAmerica_Belem[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -685,7 +685,7 @@ static const basic::ZoneEra kZoneEraAmerica_Blanc_Sablon[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -720,7 +720,7 @@ static const basic::ZoneEra kZoneEraAmerica_Bogota[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -755,7 +755,7 @@ static const basic::ZoneEra kZoneEraAmerica_Boise[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -790,7 +790,7 @@ static const basic::ZoneEra kZoneEraAmerica_Campo_Grande[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -825,7 +825,7 @@ static const basic::ZoneEra kZoneEraAmerica_Cayenne[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -860,7 +860,7 @@ static const basic::ZoneEra kZoneEraAmerica_Chicago[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -895,7 +895,7 @@ static const basic::ZoneEra kZoneEraAmerica_Chihuahua[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -930,7 +930,7 @@ static const basic::ZoneEra kZoneEraAmerica_Costa_Rica[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -965,7 +965,7 @@ static const basic::ZoneEra kZoneEraAmerica_Creston[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1000,7 +1000,7 @@ static const basic::ZoneEra kZoneEraAmerica_Curacao[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1035,7 +1035,7 @@ static const basic::ZoneEra kZoneEraAmerica_Danmarkshavn[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1070,7 +1070,7 @@ static const basic::ZoneEra kZoneEraAmerica_Dawson[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1105,7 +1105,7 @@ static const basic::ZoneEra kZoneEraAmerica_Dawson_Creek[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1140,7 +1140,7 @@ static const basic::ZoneEra kZoneEraAmerica_Denver[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1175,7 +1175,7 @@ static const basic::ZoneEra kZoneEraAmerica_Detroit[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1210,7 +1210,7 @@ static const basic::ZoneEra kZoneEraAmerica_Edmonton[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1245,7 +1245,7 @@ static const basic::ZoneEra kZoneEraAmerica_El_Salvador[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1280,7 +1280,7 @@ static const basic::ZoneEra kZoneEraAmerica_Glace_Bay[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1315,7 +1315,7 @@ static const basic::ZoneEra kZoneEraAmerica_Godthab[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1350,7 +1350,7 @@ static const basic::ZoneEra kZoneEraAmerica_Guatemala[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1385,7 +1385,7 @@ static const basic::ZoneEra kZoneEraAmerica_Guayaquil[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1420,7 +1420,7 @@ static const basic::ZoneEra kZoneEraAmerica_Guyana[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1455,7 +1455,7 @@ static const basic::ZoneEra kZoneEraAmerica_Halifax[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1490,7 +1490,7 @@ static const basic::ZoneEra kZoneEraAmerica_Havana[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1525,7 +1525,7 @@ static const basic::ZoneEra kZoneEraAmerica_Hermosillo[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -7:00 - MST { @@ -1537,7 +1537,7 @@ static const basic::ZoneEra kZoneEraAmerica_Hermosillo[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1572,7 +1572,7 @@ static const basic::ZoneEra kZoneEraAmerica_Indiana_Indianapolis[] ACE_TIME_PROG 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -5:00 US E%sT { @@ -1584,7 +1584,7 @@ static const basic::ZoneEra kZoneEraAmerica_Indiana_Indianapolis[] ACE_TIME_PROG 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1619,7 +1619,7 @@ static const basic::ZoneEra kZoneEraAmerica_Indiana_Marengo[] ACE_TIME_PROGMEM = 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -5:00 US E%sT { @@ -1631,7 +1631,7 @@ static const basic::ZoneEra kZoneEraAmerica_Indiana_Marengo[] ACE_TIME_PROGMEM = 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1666,7 +1666,7 @@ static const basic::ZoneEra kZoneEraAmerica_Indiana_Vevay[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -5:00 US E%sT { @@ -1678,7 +1678,7 @@ static const basic::ZoneEra kZoneEraAmerica_Indiana_Vevay[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1713,7 +1713,7 @@ static const basic::ZoneEra kZoneEraAmerica_Inuvik[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1748,7 +1748,7 @@ static const basic::ZoneEra kZoneEraAmerica_Jamaica[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1783,7 +1783,7 @@ static const basic::ZoneEra kZoneEraAmerica_Juneau[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1818,7 +1818,7 @@ static const basic::ZoneEra kZoneEraAmerica_Kentucky_Louisville[] ACE_TIME_PROGM 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1853,7 +1853,7 @@ static const basic::ZoneEra kZoneEraAmerica_La_Paz[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1888,7 +1888,7 @@ static const basic::ZoneEra kZoneEraAmerica_Lima[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1923,7 +1923,7 @@ static const basic::ZoneEra kZoneEraAmerica_Los_Angeles[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1958,7 +1958,7 @@ static const basic::ZoneEra kZoneEraAmerica_Managua[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1993,7 +1993,7 @@ static const basic::ZoneEra kZoneEraAmerica_Manaus[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2028,7 +2028,7 @@ static const basic::ZoneEra kZoneEraAmerica_Martinique[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2063,7 +2063,7 @@ static const basic::ZoneEra kZoneEraAmerica_Matamoros[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -6:00 US C%sT { @@ -2075,7 +2075,7 @@ static const basic::ZoneEra kZoneEraAmerica_Matamoros[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2110,7 +2110,7 @@ static const basic::ZoneEra kZoneEraAmerica_Mazatlan[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2145,7 +2145,7 @@ static const basic::ZoneEra kZoneEraAmerica_Menominee[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2180,7 +2180,7 @@ static const basic::ZoneEra kZoneEraAmerica_Merida[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2215,7 +2215,7 @@ static const basic::ZoneEra kZoneEraAmerica_Miquelon[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2250,7 +2250,7 @@ static const basic::ZoneEra kZoneEraAmerica_Moncton[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 Canada A%sT { @@ -2262,7 +2262,7 @@ static const basic::ZoneEra kZoneEraAmerica_Moncton[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2297,7 +2297,7 @@ static const basic::ZoneEra kZoneEraAmerica_Monterrey[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2332,7 +2332,7 @@ static const basic::ZoneEra kZoneEraAmerica_Montevideo[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2367,7 +2367,7 @@ static const basic::ZoneEra kZoneEraAmerica_Nassau[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2402,7 +2402,7 @@ static const basic::ZoneEra kZoneEraAmerica_New_York[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2437,7 +2437,7 @@ static const basic::ZoneEra kZoneEraAmerica_Nipigon[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2472,7 +2472,7 @@ static const basic::ZoneEra kZoneEraAmerica_Nome[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2507,7 +2507,7 @@ static const basic::ZoneEra kZoneEraAmerica_North_Dakota_Center[] ACE_TIME_PROGM 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2542,7 +2542,7 @@ static const basic::ZoneEra kZoneEraAmerica_Ojinaga[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -7:00 US M%sT { @@ -2554,7 +2554,7 @@ static const basic::ZoneEra kZoneEraAmerica_Ojinaga[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2589,7 +2589,7 @@ static const basic::ZoneEra kZoneEraAmerica_Panama[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2624,7 +2624,7 @@ static const basic::ZoneEra kZoneEraAmerica_Paramaribo[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2659,7 +2659,7 @@ static const basic::ZoneEra kZoneEraAmerica_Phoenix[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2694,7 +2694,7 @@ static const basic::ZoneEra kZoneEraAmerica_Port_au_Prince[] ACE_TIME_PROGMEM = 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2729,7 +2729,7 @@ static const basic::ZoneEra kZoneEraAmerica_Port_of_Spain[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2764,7 +2764,7 @@ static const basic::ZoneEra kZoneEraAmerica_Porto_Velho[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2799,7 +2799,7 @@ static const basic::ZoneEra kZoneEraAmerica_Puerto_Rico[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2834,7 +2834,7 @@ static const basic::ZoneEra kZoneEraAmerica_Rainy_River[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2869,7 +2869,7 @@ static const basic::ZoneEra kZoneEraAmerica_Regina[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2904,7 +2904,7 @@ static const basic::ZoneEra kZoneEraAmerica_Santiago[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2939,7 +2939,7 @@ static const basic::ZoneEra kZoneEraAmerica_Sao_Paulo[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2974,7 +2974,7 @@ static const basic::ZoneEra kZoneEraAmerica_Scoresbysund[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3009,7 +3009,7 @@ static const basic::ZoneEra kZoneEraAmerica_Sitka[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3044,7 +3044,7 @@ static const basic::ZoneEra kZoneEraAmerica_Swift_Current[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3079,7 +3079,7 @@ static const basic::ZoneEra kZoneEraAmerica_Tegucigalpa[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3114,7 +3114,7 @@ static const basic::ZoneEra kZoneEraAmerica_Thule[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3149,7 +3149,7 @@ static const basic::ZoneEra kZoneEraAmerica_Thunder_Bay[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3184,7 +3184,7 @@ static const basic::ZoneEra kZoneEraAmerica_Toronto[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3219,7 +3219,7 @@ static const basic::ZoneEra kZoneEraAmerica_Vancouver[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3254,7 +3254,7 @@ static const basic::ZoneEra kZoneEraAmerica_Whitehorse[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3289,7 +3289,7 @@ static const basic::ZoneEra kZoneEraAmerica_Winnipeg[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -6:00 Canada C%sT { @@ -3301,7 +3301,7 @@ static const basic::ZoneEra kZoneEraAmerica_Winnipeg[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3336,7 +3336,7 @@ static const basic::ZoneEra kZoneEraAmerica_Yakutat[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3371,7 +3371,7 @@ static const basic::ZoneEra kZoneEraAmerica_Yellowknife[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3406,7 +3406,7 @@ static const basic::ZoneEra kZoneEraAntarctica_DumontDUrville[] ACE_TIME_PROGMEM 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3441,7 +3441,7 @@ static const basic::ZoneEra kZoneEraAntarctica_Rothera[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3476,7 +3476,7 @@ static const basic::ZoneEra kZoneEraAntarctica_Syowa[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3511,7 +3511,7 @@ static const basic::ZoneEra kZoneEraAntarctica_Vostok[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3546,7 +3546,7 @@ static const basic::ZoneEra kZoneEraAsia_Amman[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3581,7 +3581,7 @@ static const basic::ZoneEra kZoneEraAsia_Ashgabat[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3616,7 +3616,7 @@ static const basic::ZoneEra kZoneEraAsia_Baghdad[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3651,7 +3651,7 @@ static const basic::ZoneEra kZoneEraAsia_Baku[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3686,7 +3686,7 @@ static const basic::ZoneEra kZoneEraAsia_Bangkok[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3721,7 +3721,7 @@ static const basic::ZoneEra kZoneEraAsia_Beirut[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3756,7 +3756,7 @@ static const basic::ZoneEra kZoneEraAsia_Brunei[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3791,7 +3791,7 @@ static const basic::ZoneEra kZoneEraAsia_Damascus[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3826,7 +3826,7 @@ static const basic::ZoneEra kZoneEraAsia_Dhaka[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 6:00 Dhaka +06/+07 { @@ -3838,7 +3838,7 @@ static const basic::ZoneEra kZoneEraAsia_Dhaka[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3873,7 +3873,7 @@ static const basic::ZoneEra kZoneEraAsia_Dubai[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3908,7 +3908,7 @@ static const basic::ZoneEra kZoneEraAsia_Dushanbe[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3943,7 +3943,7 @@ static const basic::ZoneEra kZoneEraAsia_Ho_Chi_Minh[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3978,7 +3978,7 @@ static const basic::ZoneEra kZoneEraAsia_Hong_Kong[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4013,7 +4013,7 @@ static const basic::ZoneEra kZoneEraAsia_Hovd[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4048,7 +4048,7 @@ static const basic::ZoneEra kZoneEraAsia_Jakarta[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4083,7 +4083,7 @@ static const basic::ZoneEra kZoneEraAsia_Jayapura[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4118,7 +4118,7 @@ static const basic::ZoneEra kZoneEraAsia_Jerusalem[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4153,7 +4153,7 @@ static const basic::ZoneEra kZoneEraAsia_Kabul[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4188,7 +4188,7 @@ static const basic::ZoneEra kZoneEraAsia_Karachi[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4223,7 +4223,7 @@ static const basic::ZoneEra kZoneEraAsia_Kathmandu[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4258,7 +4258,7 @@ static const basic::ZoneEra kZoneEraAsia_Kolkata[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4293,7 +4293,7 @@ static const basic::ZoneEra kZoneEraAsia_Kuala_Lumpur[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4328,7 +4328,7 @@ static const basic::ZoneEra kZoneEraAsia_Kuching[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4363,7 +4363,7 @@ static const basic::ZoneEra kZoneEraAsia_Macau[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4398,7 +4398,7 @@ static const basic::ZoneEra kZoneEraAsia_Makassar[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4433,7 +4433,7 @@ static const basic::ZoneEra kZoneEraAsia_Manila[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4468,7 +4468,7 @@ static const basic::ZoneEra kZoneEraAsia_Nicosia[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4503,7 +4503,7 @@ static const basic::ZoneEra kZoneEraAsia_Pontianak[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4538,7 +4538,7 @@ static const basic::ZoneEra kZoneEraAsia_Qatar[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4573,7 +4573,7 @@ static const basic::ZoneEra kZoneEraAsia_Riyadh[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4608,7 +4608,7 @@ static const basic::ZoneEra kZoneEraAsia_Samarkand[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4643,7 +4643,7 @@ static const basic::ZoneEra kZoneEraAsia_Seoul[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4678,7 +4678,7 @@ static const basic::ZoneEra kZoneEraAsia_Shanghai[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4713,7 +4713,7 @@ static const basic::ZoneEra kZoneEraAsia_Singapore[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4748,7 +4748,7 @@ static const basic::ZoneEra kZoneEraAsia_Taipei[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4783,7 +4783,7 @@ static const basic::ZoneEra kZoneEraAsia_Tashkent[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4818,7 +4818,7 @@ static const basic::ZoneEra kZoneEraAsia_Tehran[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4853,7 +4853,7 @@ static const basic::ZoneEra kZoneEraAsia_Thimphu[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4888,7 +4888,7 @@ static const basic::ZoneEra kZoneEraAsia_Tokyo[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4923,7 +4923,7 @@ static const basic::ZoneEra kZoneEraAsia_Ulaanbaatar[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4958,7 +4958,7 @@ static const basic::ZoneEra kZoneEraAsia_Urumqi[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4993,7 +4993,7 @@ static const basic::ZoneEra kZoneEraAsia_Yangon[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5028,7 +5028,7 @@ static const basic::ZoneEra kZoneEraAsia_Yerevan[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 4:00 Armenia +04/+05 { @@ -5040,7 +5040,7 @@ static const basic::ZoneEra kZoneEraAsia_Yerevan[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5075,7 +5075,7 @@ static const basic::ZoneEra kZoneEraAtlantic_Azores[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5110,7 +5110,7 @@ static const basic::ZoneEra kZoneEraAtlantic_Bermuda[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5145,7 +5145,7 @@ static const basic::ZoneEra kZoneEraAtlantic_Canary[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5180,7 +5180,7 @@ static const basic::ZoneEra kZoneEraAtlantic_Cape_Verde[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5215,7 +5215,7 @@ static const basic::ZoneEra kZoneEraAtlantic_Faroe[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5250,7 +5250,7 @@ static const basic::ZoneEra kZoneEraAtlantic_Madeira[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5285,7 +5285,7 @@ static const basic::ZoneEra kZoneEraAtlantic_Reykjavik[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5320,7 +5320,7 @@ static const basic::ZoneEra kZoneEraAtlantic_South_Georgia[] ACE_TIME_PROGMEM = 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5355,7 +5355,7 @@ static const basic::ZoneEra kZoneEraAustralia_Adelaide[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5390,7 +5390,7 @@ static const basic::ZoneEra kZoneEraAustralia_Brisbane[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5425,7 +5425,7 @@ static const basic::ZoneEra kZoneEraAustralia_Broken_Hill[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 9:30 AS AC%sT { @@ -5437,7 +5437,7 @@ static const basic::ZoneEra kZoneEraAustralia_Broken_Hill[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5472,7 +5472,7 @@ static const basic::ZoneEra kZoneEraAustralia_Currie[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5507,7 +5507,7 @@ static const basic::ZoneEra kZoneEraAustralia_Darwin[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5542,7 +5542,7 @@ static const basic::ZoneEra kZoneEraAustralia_Eucla[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5577,7 +5577,7 @@ static const basic::ZoneEra kZoneEraAustralia_Hobart[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5612,7 +5612,7 @@ static const basic::ZoneEra kZoneEraAustralia_Lindeman[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5647,7 +5647,7 @@ static const basic::ZoneEra kZoneEraAustralia_Lord_Howe[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5682,7 +5682,7 @@ static const basic::ZoneEra kZoneEraAustralia_Melbourne[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5717,7 +5717,7 @@ static const basic::ZoneEra kZoneEraAustralia_Perth[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5752,7 +5752,7 @@ static const basic::ZoneEra kZoneEraAustralia_Sydney[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5787,7 +5787,7 @@ static const basic::ZoneEra kZoneEraCET[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5822,7 +5822,7 @@ static const basic::ZoneEra kZoneEraCST6CDT[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5857,7 +5857,7 @@ static const basic::ZoneEra kZoneEraEET[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5892,7 +5892,7 @@ static const basic::ZoneEra kZoneEraEST[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5927,7 +5927,7 @@ static const basic::ZoneEra kZoneEraEST5EDT[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5962,7 +5962,7 @@ static const basic::ZoneEra kZoneEraEtc_GMT[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5997,7 +5997,7 @@ static const basic::ZoneEra kZoneEraEtc_GMT_PLUS_1[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6032,7 +6032,7 @@ static const basic::ZoneEra kZoneEraEtc_GMT_PLUS_10[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6067,7 +6067,7 @@ static const basic::ZoneEra kZoneEraEtc_GMT_PLUS_11[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6102,7 +6102,7 @@ static const basic::ZoneEra kZoneEraEtc_GMT_PLUS_12[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6137,7 +6137,7 @@ static const basic::ZoneEra kZoneEraEtc_GMT_PLUS_2[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6172,7 +6172,7 @@ static const basic::ZoneEra kZoneEraEtc_GMT_PLUS_3[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6207,7 +6207,7 @@ static const basic::ZoneEra kZoneEraEtc_GMT_PLUS_4[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6242,7 +6242,7 @@ static const basic::ZoneEra kZoneEraEtc_GMT_PLUS_5[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6277,7 +6277,7 @@ static const basic::ZoneEra kZoneEraEtc_GMT_PLUS_6[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6312,7 +6312,7 @@ static const basic::ZoneEra kZoneEraEtc_GMT_PLUS_7[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6347,7 +6347,7 @@ static const basic::ZoneEra kZoneEraEtc_GMT_PLUS_8[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6382,7 +6382,7 @@ static const basic::ZoneEra kZoneEraEtc_GMT_PLUS_9[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6417,7 +6417,7 @@ static const basic::ZoneEra kZoneEraEtc_GMT_1[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6452,7 +6452,7 @@ static const basic::ZoneEra kZoneEraEtc_GMT_10[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6487,7 +6487,7 @@ static const basic::ZoneEra kZoneEraEtc_GMT_11[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6522,7 +6522,7 @@ static const basic::ZoneEra kZoneEraEtc_GMT_12[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6557,7 +6557,7 @@ static const basic::ZoneEra kZoneEraEtc_GMT_13[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6592,7 +6592,7 @@ static const basic::ZoneEra kZoneEraEtc_GMT_14[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6627,7 +6627,7 @@ static const basic::ZoneEra kZoneEraEtc_GMT_2[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6662,7 +6662,7 @@ static const basic::ZoneEra kZoneEraEtc_GMT_3[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6697,7 +6697,7 @@ static const basic::ZoneEra kZoneEraEtc_GMT_4[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6732,7 +6732,7 @@ static const basic::ZoneEra kZoneEraEtc_GMT_5[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6767,7 +6767,7 @@ static const basic::ZoneEra kZoneEraEtc_GMT_6[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6802,7 +6802,7 @@ static const basic::ZoneEra kZoneEraEtc_GMT_7[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6837,7 +6837,7 @@ static const basic::ZoneEra kZoneEraEtc_GMT_8[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6872,7 +6872,7 @@ static const basic::ZoneEra kZoneEraEtc_GMT_9[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6907,7 +6907,7 @@ static const basic::ZoneEra kZoneEraEtc_UTC[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6942,7 +6942,7 @@ static const basic::ZoneEra kZoneEraEurope_Amsterdam[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6977,7 +6977,7 @@ static const basic::ZoneEra kZoneEraEurope_Andorra[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7012,7 +7012,7 @@ static const basic::ZoneEra kZoneEraEurope_Athens[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7047,7 +7047,7 @@ static const basic::ZoneEra kZoneEraEurope_Belgrade[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7082,7 +7082,7 @@ static const basic::ZoneEra kZoneEraEurope_Berlin[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7117,7 +7117,7 @@ static const basic::ZoneEra kZoneEraEurope_Brussels[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7152,7 +7152,7 @@ static const basic::ZoneEra kZoneEraEurope_Bucharest[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7187,7 +7187,7 @@ static const basic::ZoneEra kZoneEraEurope_Budapest[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7222,7 +7222,7 @@ static const basic::ZoneEra kZoneEraEurope_Chisinau[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7257,7 +7257,7 @@ static const basic::ZoneEra kZoneEraEurope_Copenhagen[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7292,7 +7292,7 @@ static const basic::ZoneEra kZoneEraEurope_Dublin[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7327,7 +7327,7 @@ static const basic::ZoneEra kZoneEraEurope_Gibraltar[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7362,7 +7362,7 @@ static const basic::ZoneEra kZoneEraEurope_Helsinki[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7397,7 +7397,7 @@ static const basic::ZoneEra kZoneEraEurope_Kiev[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7432,7 +7432,7 @@ static const basic::ZoneEra kZoneEraEurope_Lisbon[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7467,7 +7467,7 @@ static const basic::ZoneEra kZoneEraEurope_London[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7502,7 +7502,7 @@ static const basic::ZoneEra kZoneEraEurope_Luxembourg[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7537,7 +7537,7 @@ static const basic::ZoneEra kZoneEraEurope_Madrid[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7572,7 +7572,7 @@ static const basic::ZoneEra kZoneEraEurope_Malta[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7607,7 +7607,7 @@ static const basic::ZoneEra kZoneEraEurope_Monaco[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7642,7 +7642,7 @@ static const basic::ZoneEra kZoneEraEurope_Oslo[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7677,7 +7677,7 @@ static const basic::ZoneEra kZoneEraEurope_Paris[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7712,7 +7712,7 @@ static const basic::ZoneEra kZoneEraEurope_Prague[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7747,7 +7747,7 @@ static const basic::ZoneEra kZoneEraEurope_Rome[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7782,7 +7782,7 @@ static const basic::ZoneEra kZoneEraEurope_Sofia[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7817,7 +7817,7 @@ static const basic::ZoneEra kZoneEraEurope_Stockholm[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7852,7 +7852,7 @@ static const basic::ZoneEra kZoneEraEurope_Tirane[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7887,7 +7887,7 @@ static const basic::ZoneEra kZoneEraEurope_Uzhgorod[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7922,7 +7922,7 @@ static const basic::ZoneEra kZoneEraEurope_Vienna[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7957,7 +7957,7 @@ static const basic::ZoneEra kZoneEraEurope_Warsaw[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7992,7 +7992,7 @@ static const basic::ZoneEra kZoneEraEurope_Zaporozhye[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8027,7 +8027,7 @@ static const basic::ZoneEra kZoneEraEurope_Zurich[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8062,7 +8062,7 @@ static const basic::ZoneEra kZoneEraHST[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8097,7 +8097,7 @@ static const basic::ZoneEra kZoneEraIndian_Chagos[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8132,7 +8132,7 @@ static const basic::ZoneEra kZoneEraIndian_Christmas[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8167,7 +8167,7 @@ static const basic::ZoneEra kZoneEraIndian_Cocos[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8202,7 +8202,7 @@ static const basic::ZoneEra kZoneEraIndian_Kerguelen[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8237,7 +8237,7 @@ static const basic::ZoneEra kZoneEraIndian_Mahe[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8272,7 +8272,7 @@ static const basic::ZoneEra kZoneEraIndian_Maldives[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8307,7 +8307,7 @@ static const basic::ZoneEra kZoneEraIndian_Mauritius[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8342,7 +8342,7 @@ static const basic::ZoneEra kZoneEraIndian_Reunion[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8377,7 +8377,7 @@ static const basic::ZoneEra kZoneEraMET[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8412,7 +8412,7 @@ static const basic::ZoneEra kZoneEraMST[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8447,7 +8447,7 @@ static const basic::ZoneEra kZoneEraMST7MDT[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8482,7 +8482,7 @@ static const basic::ZoneEra kZoneEraPST8PDT[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8517,7 +8517,7 @@ static const basic::ZoneEra kZoneEraPacific_Auckland[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8552,7 +8552,7 @@ static const basic::ZoneEra kZoneEraPacific_Chatham[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8587,7 +8587,7 @@ static const basic::ZoneEra kZoneEraPacific_Chuuk[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8622,7 +8622,7 @@ static const basic::ZoneEra kZoneEraPacific_Easter[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8657,7 +8657,7 @@ static const basic::ZoneEra kZoneEraPacific_Efate[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8692,7 +8692,7 @@ static const basic::ZoneEra kZoneEraPacific_Enderbury[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8727,7 +8727,7 @@ static const basic::ZoneEra kZoneEraPacific_Fiji[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8762,7 +8762,7 @@ static const basic::ZoneEra kZoneEraPacific_Funafuti[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8797,7 +8797,7 @@ static const basic::ZoneEra kZoneEraPacific_Galapagos[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8832,7 +8832,7 @@ static const basic::ZoneEra kZoneEraPacific_Gambier[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8867,7 +8867,7 @@ static const basic::ZoneEra kZoneEraPacific_Guadalcanal[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8902,7 +8902,7 @@ static const basic::ZoneEra kZoneEraPacific_Honolulu[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8937,7 +8937,7 @@ static const basic::ZoneEra kZoneEraPacific_Kiritimati[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8972,7 +8972,7 @@ static const basic::ZoneEra kZoneEraPacific_Kosrae[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 11:00 - +11 { @@ -8984,7 +8984,7 @@ static const basic::ZoneEra kZoneEraPacific_Kosrae[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9019,7 +9019,7 @@ static const basic::ZoneEra kZoneEraPacific_Kwajalein[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9054,7 +9054,7 @@ static const basic::ZoneEra kZoneEraPacific_Majuro[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9089,7 +9089,7 @@ static const basic::ZoneEra kZoneEraPacific_Marquesas[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9124,7 +9124,7 @@ static const basic::ZoneEra kZoneEraPacific_Nauru[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9159,7 +9159,7 @@ static const basic::ZoneEra kZoneEraPacific_Niue[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9194,7 +9194,7 @@ static const basic::ZoneEra kZoneEraPacific_Noumea[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9229,7 +9229,7 @@ static const basic::ZoneEra kZoneEraPacific_Pago_Pago[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9264,7 +9264,7 @@ static const basic::ZoneEra kZoneEraPacific_Palau[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9299,7 +9299,7 @@ static const basic::ZoneEra kZoneEraPacific_Pitcairn[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9334,7 +9334,7 @@ static const basic::ZoneEra kZoneEraPacific_Pohnpei[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9369,7 +9369,7 @@ static const basic::ZoneEra kZoneEraPacific_Port_Moresby[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9404,7 +9404,7 @@ static const basic::ZoneEra kZoneEraPacific_Rarotonga[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9439,7 +9439,7 @@ static const basic::ZoneEra kZoneEraPacific_Tahiti[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9474,7 +9474,7 @@ static const basic::ZoneEra kZoneEraPacific_Tarawa[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9509,7 +9509,7 @@ static const basic::ZoneEra kZoneEraPacific_Tongatapu[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 13:00 Tonga +13/+14 { @@ -9521,7 +9521,7 @@ static const basic::ZoneEra kZoneEraPacific_Tongatapu[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9556,7 +9556,7 @@ static const basic::ZoneEra kZoneEraPacific_Wake[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9591,7 +9591,7 @@ static const basic::ZoneEra kZoneEraPacific_Wallis[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9626,7 +9626,7 @@ static const basic::ZoneEra kZoneEraWET[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; diff --git a/src/ace_time/zonedb/zone_policies.cpp b/src/ace_time/zonedb/zone_policies.cpp index c69cc0fdc..5119f5717 100644 --- a/src/ace_time/zonedb/zone_policies.cpp +++ b/src/ace_time/zonedb/zone_policies.cpp @@ -34,7 +34,7 @@ static const basic::ZoneRule kZoneRulesAN[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -46,7 +46,7 @@ static const basic::ZoneRule kZoneRulesAN[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -58,7 +58,7 @@ static const basic::ZoneRule kZoneRulesAN[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -70,7 +70,7 @@ static const basic::ZoneRule kZoneRulesAN[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -82,7 +82,7 @@ static const basic::ZoneRule kZoneRulesAN[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -94,7 +94,7 @@ static const basic::ZoneRule kZoneRulesAN[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -106,7 +106,7 @@ static const basic::ZoneRule kZoneRulesAN[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -118,7 +118,7 @@ static const basic::ZoneRule kZoneRulesAN[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -130,7 +130,7 @@ static const basic::ZoneRule kZoneRulesAN[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -162,7 +162,7 @@ static const basic::ZoneRule kZoneRulesAQ[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -194,7 +194,7 @@ static const basic::ZoneRule kZoneRulesAS[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -206,7 +206,7 @@ static const basic::ZoneRule kZoneRulesAS[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -218,7 +218,7 @@ static const basic::ZoneRule kZoneRulesAS[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -230,7 +230,7 @@ static const basic::ZoneRule kZoneRulesAS[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 2 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -242,7 +242,7 @@ static const basic::ZoneRule kZoneRulesAS[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -254,7 +254,7 @@ static const basic::ZoneRule kZoneRulesAS[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -266,7 +266,7 @@ static const basic::ZoneRule kZoneRulesAS[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -298,7 +298,7 @@ static const basic::ZoneRule kZoneRulesAT[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -310,7 +310,7 @@ static const basic::ZoneRule kZoneRulesAT[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -322,7 +322,7 @@ static const basic::ZoneRule kZoneRulesAT[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -334,7 +334,7 @@ static const basic::ZoneRule kZoneRulesAT[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -346,7 +346,7 @@ static const basic::ZoneRule kZoneRulesAT[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -358,7 +358,7 @@ static const basic::ZoneRule kZoneRulesAT[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -370,7 +370,7 @@ static const basic::ZoneRule kZoneRulesAT[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -382,7 +382,7 @@ static const basic::ZoneRule kZoneRulesAT[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -414,7 +414,7 @@ static const basic::ZoneRule kZoneRulesAV[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -426,7 +426,7 @@ static const basic::ZoneRule kZoneRulesAV[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -438,7 +438,7 @@ static const basic::ZoneRule kZoneRulesAV[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -450,7 +450,7 @@ static const basic::ZoneRule kZoneRulesAV[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -462,7 +462,7 @@ static const basic::ZoneRule kZoneRulesAV[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -474,7 +474,7 @@ static const basic::ZoneRule kZoneRulesAV[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -486,7 +486,7 @@ static const basic::ZoneRule kZoneRulesAV[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -498,7 +498,7 @@ static const basic::ZoneRule kZoneRulesAV[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -510,7 +510,7 @@ static const basic::ZoneRule kZoneRulesAV[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -542,7 +542,7 @@ static const basic::ZoneRule kZoneRulesAW[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -554,7 +554,7 @@ static const basic::ZoneRule kZoneRulesAW[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 3 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -566,7 +566,7 @@ static const basic::ZoneRule kZoneRulesAW[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -578,7 +578,7 @@ static const basic::ZoneRule kZoneRulesAW[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -610,7 +610,7 @@ static const basic::ZoneRule kZoneRulesArmenia[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -622,7 +622,7 @@ static const basic::ZoneRule kZoneRulesArmenia[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -634,7 +634,7 @@ static const basic::ZoneRule kZoneRulesArmenia[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -666,7 +666,7 @@ static const basic::ZoneRule kZoneRulesAus[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -698,7 +698,7 @@ static const basic::ZoneRule kZoneRulesAzer[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 16 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -710,7 +710,7 @@ static const basic::ZoneRule kZoneRulesAzer[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 20 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -742,7 +742,7 @@ static const basic::ZoneRule kZoneRulesBarb[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 25 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -774,7 +774,7 @@ static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 11 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -786,7 +786,7 @@ static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -798,7 +798,7 @@ static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 3 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -810,7 +810,7 @@ static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 27 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -822,7 +822,7 @@ static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -834,7 +834,7 @@ static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -846,7 +846,7 @@ static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 3 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -858,7 +858,7 @@ static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 19 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -870,7 +870,7 @@ static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 2 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -882,7 +882,7 @@ static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 16 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -894,7 +894,7 @@ static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 5 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -906,7 +906,7 @@ static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 25 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -918,7 +918,7 @@ static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -930,7 +930,7 @@ static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -942,7 +942,7 @@ static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -954,7 +954,7 @@ static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -966,7 +966,7 @@ static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -978,7 +978,7 @@ static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -990,7 +990,7 @@ static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1002,7 +1002,7 @@ static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -1014,7 +1014,7 @@ static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1026,7 +1026,7 @@ static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1038,7 +1038,7 @@ static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1050,7 +1050,7 @@ static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1062,7 +1062,7 @@ static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1074,7 +1074,7 @@ static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1086,7 +1086,7 @@ static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1098,7 +1098,7 @@ static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1130,7 +1130,7 @@ static const basic::ZoneRule kZoneRulesC_Eur[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1142,7 +1142,7 @@ static const basic::ZoneRule kZoneRulesC_Eur[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -1154,7 +1154,7 @@ static const basic::ZoneRule kZoneRulesC_Eur[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1186,7 +1186,7 @@ static const basic::ZoneRule kZoneRulesCO[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 4 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1218,7 +1218,7 @@ static const basic::ZoneRule kZoneRulesCR[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -1250,7 +1250,7 @@ static const basic::ZoneRule kZoneRulesCanada[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -1262,7 +1262,7 @@ static const basic::ZoneRule kZoneRulesCanada[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -1274,7 +1274,7 @@ static const basic::ZoneRule kZoneRulesCanada[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -1286,7 +1286,7 @@ static const basic::ZoneRule kZoneRulesCanada[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -1298,7 +1298,7 @@ static const basic::ZoneRule kZoneRulesCanada[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -1330,7 +1330,7 @@ static const basic::ZoneRule kZoneRulesChatham[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 11 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -1342,7 +1342,7 @@ static const basic::ZoneRule kZoneRulesChatham[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 11 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -1354,7 +1354,7 @@ static const basic::ZoneRule kZoneRulesChatham[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 11 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1366,7 +1366,7 @@ static const basic::ZoneRule kZoneRulesChatham[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 11 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -1378,7 +1378,7 @@ static const basic::ZoneRule kZoneRulesChatham[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 11 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1410,7 +1410,7 @@ static const basic::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 27 /*onDayOfMonth*/, 16 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -1422,7 +1422,7 @@ static const basic::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 4 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1434,7 +1434,7 @@ static const basic::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 9 /*onDayOfMonth*/, 16 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -1446,7 +1446,7 @@ static const basic::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 9 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1458,7 +1458,7 @@ static const basic::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 30 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1470,7 +1470,7 @@ static const basic::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 9 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1482,7 +1482,7 @@ static const basic::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1494,7 +1494,7 @@ static const basic::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 2 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1506,7 +1506,7 @@ static const basic::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 16 /*onDayOfMonth*/, 16 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -1518,7 +1518,7 @@ static const basic::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 23 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1530,7 +1530,7 @@ static const basic::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 2 /*onDayOfMonth*/, 16 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -1542,7 +1542,7 @@ static const basic::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 9 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1554,7 +1554,7 @@ static const basic::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 9 /*onDayOfMonth*/, 16 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -1566,7 +1566,7 @@ static const basic::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 2 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1578,7 +1578,7 @@ static const basic::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 2 /*onDayOfMonth*/, 16 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -1610,7 +1610,7 @@ static const basic::ZoneRule kZoneRulesCook[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1642,7 +1642,7 @@ static const basic::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 12 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -1654,7 +1654,7 @@ static const basic::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -1666,7 +1666,7 @@ static const basic::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -1678,7 +1678,7 @@ static const basic::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -1690,7 +1690,7 @@ static const basic::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -1702,7 +1702,7 @@ static const basic::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -1714,7 +1714,7 @@ static const basic::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -1726,7 +1726,7 @@ static const basic::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -1738,7 +1738,7 @@ static const basic::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -1750,7 +1750,7 @@ static const basic::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -1762,7 +1762,7 @@ static const basic::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 13 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -1774,7 +1774,7 @@ static const basic::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -1786,7 +1786,7 @@ static const basic::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -1798,7 +1798,7 @@ static const basic::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -1830,7 +1830,7 @@ static const basic::ZoneRule kZoneRulesDhaka[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1842,7 +1842,7 @@ static const basic::ZoneRule kZoneRulesDhaka[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 19 /*onDayOfMonth*/, 92 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -1854,7 +1854,7 @@ static const basic::ZoneRule kZoneRulesDhaka[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 31 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1886,7 +1886,7 @@ static const basic::ZoneRule kZoneRulesEU[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1898,7 +1898,7 @@ static const basic::ZoneRule kZoneRulesEU[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -1910,7 +1910,7 @@ static const basic::ZoneRule kZoneRulesEU[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1942,7 +1942,7 @@ static const basic::ZoneRule kZoneRulesEUAsia[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -1954,7 +1954,7 @@ static const basic::ZoneRule kZoneRulesEUAsia[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1966,7 +1966,7 @@ static const basic::ZoneRule kZoneRulesEUAsia[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1998,7 +1998,7 @@ static const basic::ZoneRule kZoneRulesEcuador[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 5 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2030,7 +2030,7 @@ static const basic::ZoneRule kZoneRulesEire[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2042,7 +2042,7 @@ static const basic::ZoneRule kZoneRulesEire[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, -4 /*deltaCode*/, '-' /*letter*/, }, @@ -2054,7 +2054,7 @@ static const basic::ZoneRule kZoneRulesEire[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, -4 /*deltaCode*/, '-' /*letter*/, }, @@ -2086,7 +2086,7 @@ static const basic::ZoneRule kZoneRulesFiji[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -2098,7 +2098,7 @@ static const basic::ZoneRule kZoneRulesFiji[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2110,7 +2110,7 @@ static const basic::ZoneRule kZoneRulesFiji[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 29 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -2122,7 +2122,7 @@ static const basic::ZoneRule kZoneRulesFiji[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2134,7 +2134,7 @@ static const basic::ZoneRule kZoneRulesFiji[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -2146,7 +2146,7 @@ static const basic::ZoneRule kZoneRulesFiji[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2158,7 +2158,7 @@ static const basic::ZoneRule kZoneRulesFiji[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 18 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2170,7 +2170,7 @@ static const basic::ZoneRule kZoneRulesFiji[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 18 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2182,7 +2182,7 @@ static const basic::ZoneRule kZoneRulesFiji[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -2194,7 +2194,7 @@ static const basic::ZoneRule kZoneRulesFiji[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 13 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2226,7 +2226,7 @@ static const basic::ZoneRule kZoneRulesGhana[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 31 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2258,7 +2258,7 @@ static const basic::ZoneRule kZoneRulesGuat[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 7 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -2270,7 +2270,7 @@ static const basic::ZoneRule kZoneRulesGuat[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 30 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -2282,7 +2282,7 @@ static const basic::ZoneRule kZoneRulesGuat[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -2314,7 +2314,7 @@ static const basic::ZoneRule kZoneRulesHK[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 16 /*onDayOfMonth*/, 14 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2346,7 +2346,7 @@ static const basic::ZoneRule kZoneRulesHaiti[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -2358,7 +2358,7 @@ static const basic::ZoneRule kZoneRulesHaiti[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -2370,7 +2370,7 @@ static const basic::ZoneRule kZoneRulesHaiti[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -2382,7 +2382,7 @@ static const basic::ZoneRule kZoneRulesHaiti[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -2394,7 +2394,7 @@ static const basic::ZoneRule kZoneRulesHaiti[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -2406,7 +2406,7 @@ static const basic::ZoneRule kZoneRulesHaiti[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -2418,7 +2418,7 @@ static const basic::ZoneRule kZoneRulesHaiti[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -2450,7 +2450,7 @@ static const basic::ZoneRule kZoneRulesHoliday[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -2482,7 +2482,7 @@ static const basic::ZoneRule kZoneRulesHond[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -2494,7 +2494,7 @@ static const basic::ZoneRule kZoneRulesHond[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -2506,7 +2506,7 @@ static const basic::ZoneRule kZoneRulesHond[] ACE_TIME_PROGMEM = { 1 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -2538,7 +2538,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2550,7 +2550,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -2562,7 +2562,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2574,7 +2574,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -2586,7 +2586,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2598,7 +2598,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -2610,7 +2610,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2622,7 +2622,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -2634,7 +2634,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2646,7 +2646,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -2658,7 +2658,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2670,7 +2670,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -2682,7 +2682,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2694,7 +2694,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -2706,7 +2706,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2718,7 +2718,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -2730,7 +2730,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2742,7 +2742,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -2754,7 +2754,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2766,7 +2766,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -2778,7 +2778,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2790,7 +2790,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -2802,7 +2802,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2814,7 +2814,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -2826,7 +2826,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2838,7 +2838,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -2850,7 +2850,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2862,7 +2862,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -2874,7 +2874,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2886,7 +2886,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -2898,7 +2898,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2910,7 +2910,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -2922,7 +2922,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2934,7 +2934,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -2946,7 +2946,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2958,7 +2958,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -2970,7 +2970,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2982,7 +2982,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -2994,7 +2994,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3006,7 +3006,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3018,7 +3018,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3030,7 +3030,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3042,7 +3042,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3054,7 +3054,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3066,7 +3066,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3078,7 +3078,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3090,7 +3090,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3102,7 +3102,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3114,7 +3114,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3126,7 +3126,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3138,7 +3138,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3150,7 +3150,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3162,7 +3162,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3174,7 +3174,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3186,7 +3186,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3218,7 +3218,7 @@ static const basic::ZoneRule kZoneRulesIraq[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3230,7 +3230,7 @@ static const basic::ZoneRule kZoneRulesIraq[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3242,7 +3242,7 @@ static const basic::ZoneRule kZoneRulesIraq[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3274,7 +3274,7 @@ static const basic::ZoneRule kZoneRulesJapan[] ACE_TIME_PROGMEM = { 6 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 100 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -3306,7 +3306,7 @@ static const basic::ZoneRule kZoneRulesJordan[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3318,7 +3318,7 @@ static const basic::ZoneRule kZoneRulesJordan[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -3330,7 +3330,7 @@ static const basic::ZoneRule kZoneRulesJordan[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3342,7 +3342,7 @@ static const basic::ZoneRule kZoneRulesJordan[] ACE_TIME_PROGMEM = { 4 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -3354,7 +3354,7 @@ static const basic::ZoneRule kZoneRulesJordan[] ACE_TIME_PROGMEM = { 4 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -3366,7 +3366,7 @@ static const basic::ZoneRule kZoneRulesJordan[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 24 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3378,7 +3378,7 @@ static const basic::ZoneRule kZoneRulesJordan[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3390,7 +3390,7 @@ static const basic::ZoneRule kZoneRulesJordan[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3402,7 +3402,7 @@ static const basic::ZoneRule kZoneRulesJordan[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3414,7 +3414,7 @@ static const basic::ZoneRule kZoneRulesJordan[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3426,7 +3426,7 @@ static const basic::ZoneRule kZoneRulesJordan[] ACE_TIME_PROGMEM = { 4 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -3438,7 +3438,7 @@ static const basic::ZoneRule kZoneRulesJordan[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3470,7 +3470,7 @@ static const basic::ZoneRule kZoneRulesLH[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 2 /*deltaCode*/, '-' /*letter*/, }, @@ -3482,7 +3482,7 @@ static const basic::ZoneRule kZoneRulesLH[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3494,7 +3494,7 @@ static const basic::ZoneRule kZoneRulesLH[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3506,7 +3506,7 @@ static const basic::ZoneRule kZoneRulesLH[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 2 /*deltaCode*/, '-' /*letter*/, }, @@ -3518,7 +3518,7 @@ static const basic::ZoneRule kZoneRulesLH[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 2 /*deltaCode*/, '-' /*letter*/, }, @@ -3530,7 +3530,7 @@ static const basic::ZoneRule kZoneRulesLH[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3542,7 +3542,7 @@ static const basic::ZoneRule kZoneRulesLH[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3554,7 +3554,7 @@ static const basic::ZoneRule kZoneRulesLH[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3566,7 +3566,7 @@ static const basic::ZoneRule kZoneRulesLH[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 2 /*deltaCode*/, '-' /*letter*/, }, @@ -3598,7 +3598,7 @@ static const basic::ZoneRule kZoneRulesLebanon[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -3610,7 +3610,7 @@ static const basic::ZoneRule kZoneRulesLebanon[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3622,7 +3622,7 @@ static const basic::ZoneRule kZoneRulesLebanon[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3654,7 +3654,7 @@ static const basic::ZoneRule kZoneRulesMacau[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 16 /*onDayOfMonth*/, 14 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -3686,7 +3686,7 @@ static const basic::ZoneRule kZoneRulesMauritius[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3698,7 +3698,7 @@ static const basic::ZoneRule kZoneRulesMauritius[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3710,7 +3710,7 @@ static const basic::ZoneRule kZoneRulesMauritius[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3742,7 +3742,7 @@ static const basic::ZoneRule kZoneRulesMexico[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 30 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -3754,7 +3754,7 @@ static const basic::ZoneRule kZoneRulesMexico[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -3766,7 +3766,7 @@ static const basic::ZoneRule kZoneRulesMexico[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -3778,7 +3778,7 @@ static const basic::ZoneRule kZoneRulesMexico[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -3790,7 +3790,7 @@ static const basic::ZoneRule kZoneRulesMexico[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -3802,7 +3802,7 @@ static const basic::ZoneRule kZoneRulesMexico[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -3814,7 +3814,7 @@ static const basic::ZoneRule kZoneRulesMexico[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -3846,7 +3846,7 @@ static const basic::ZoneRule kZoneRulesMoldova[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -3858,7 +3858,7 @@ static const basic::ZoneRule kZoneRulesMoldova[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3890,7 +3890,7 @@ static const basic::ZoneRule kZoneRulesMoncton[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -3902,7 +3902,7 @@ static const basic::ZoneRule kZoneRulesMoncton[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -3914,7 +3914,7 @@ static const basic::ZoneRule kZoneRulesMoncton[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -3946,7 +3946,7 @@ static const basic::ZoneRule kZoneRulesMongol[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3958,7 +3958,7 @@ static const basic::ZoneRule kZoneRulesMongol[] ACE_TIME_PROGMEM = { 6 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3970,7 +3970,7 @@ static const basic::ZoneRule kZoneRulesMongol[] ACE_TIME_PROGMEM = { 6 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3982,7 +3982,7 @@ static const basic::ZoneRule kZoneRulesMongol[] ACE_TIME_PROGMEM = { 6 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3994,7 +3994,7 @@ static const basic::ZoneRule kZoneRulesMongol[] ACE_TIME_PROGMEM = { 6 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -4006,7 +4006,7 @@ static const basic::ZoneRule kZoneRulesMongol[] ACE_TIME_PROGMEM = { 6 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4038,7 +4038,7 @@ static const basic::ZoneRule kZoneRulesNC[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 2 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4070,7 +4070,7 @@ static const basic::ZoneRule kZoneRulesNZ[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -4082,7 +4082,7 @@ static const basic::ZoneRule kZoneRulesNZ[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -4094,7 +4094,7 @@ static const basic::ZoneRule kZoneRulesNZ[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -4106,7 +4106,7 @@ static const basic::ZoneRule kZoneRulesNZ[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -4118,7 +4118,7 @@ static const basic::ZoneRule kZoneRulesNZ[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -4150,7 +4150,7 @@ static const basic::ZoneRule kZoneRulesNic[] ACE_TIME_PROGMEM = { 1 /*onDayOfWeek*/, 23 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -4162,7 +4162,7 @@ static const basic::ZoneRule kZoneRulesNic[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 10 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -4174,7 +4174,7 @@ static const basic::ZoneRule kZoneRulesNic[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -4186,7 +4186,7 @@ static const basic::ZoneRule kZoneRulesNic[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 30 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -4198,7 +4198,7 @@ static const basic::ZoneRule kZoneRulesNic[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -4230,7 +4230,7 @@ static const basic::ZoneRule kZoneRulesPRC[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 11 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -4262,7 +4262,7 @@ static const basic::ZoneRule kZoneRulesPakistan[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4274,7 +4274,7 @@ static const basic::ZoneRule kZoneRulesPakistan[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 2 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -4286,7 +4286,7 @@ static const basic::ZoneRule kZoneRulesPakistan[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 2 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4298,7 +4298,7 @@ static const basic::ZoneRule kZoneRulesPakistan[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -4310,7 +4310,7 @@ static const basic::ZoneRule kZoneRulesPakistan[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4322,7 +4322,7 @@ static const basic::ZoneRule kZoneRulesPakistan[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -4354,7 +4354,7 @@ static const basic::ZoneRule kZoneRulesPara[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -4366,7 +4366,7 @@ static const basic::ZoneRule kZoneRulesPara[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4378,7 +4378,7 @@ static const basic::ZoneRule kZoneRulesPara[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4390,7 +4390,7 @@ static const basic::ZoneRule kZoneRulesPara[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4402,7 +4402,7 @@ static const basic::ZoneRule kZoneRulesPara[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -4414,7 +4414,7 @@ static const basic::ZoneRule kZoneRulesPara[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -4426,7 +4426,7 @@ static const basic::ZoneRule kZoneRulesPara[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4438,7 +4438,7 @@ static const basic::ZoneRule kZoneRulesPara[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -4450,7 +4450,7 @@ static const basic::ZoneRule kZoneRulesPara[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4462,7 +4462,7 @@ static const basic::ZoneRule kZoneRulesPara[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4494,7 +4494,7 @@ static const basic::ZoneRule kZoneRulesPeru[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4526,7 +4526,7 @@ static const basic::ZoneRule kZoneRulesPhil[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -4558,7 +4558,7 @@ static const basic::ZoneRule kZoneRulesROK[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -4590,7 +4590,7 @@ static const basic::ZoneRule kZoneRulesRussiaAsia[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4602,7 +4602,7 @@ static const basic::ZoneRule kZoneRulesRussiaAsia[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -4614,7 +4614,7 @@ static const basic::ZoneRule kZoneRulesRussiaAsia[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4646,7 +4646,7 @@ static const basic::ZoneRule kZoneRulesSA[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4678,7 +4678,7 @@ static const basic::ZoneRule kZoneRulesSalv[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -4710,7 +4710,7 @@ static const basic::ZoneRule kZoneRulesSyria[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4722,7 +4722,7 @@ static const basic::ZoneRule kZoneRulesSyria[] ACE_TIME_PROGMEM = { 1 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -4734,7 +4734,7 @@ static const basic::ZoneRule kZoneRulesSyria[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -4746,7 +4746,7 @@ static const basic::ZoneRule kZoneRulesSyria[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4758,7 +4758,7 @@ static const basic::ZoneRule kZoneRulesSyria[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -4770,7 +4770,7 @@ static const basic::ZoneRule kZoneRulesSyria[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4782,7 +4782,7 @@ static const basic::ZoneRule kZoneRulesSyria[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -4794,7 +4794,7 @@ static const basic::ZoneRule kZoneRulesSyria[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4806,7 +4806,7 @@ static const basic::ZoneRule kZoneRulesSyria[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -4818,7 +4818,7 @@ static const basic::ZoneRule kZoneRulesSyria[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -4830,7 +4830,7 @@ static const basic::ZoneRule kZoneRulesSyria[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -4842,7 +4842,7 @@ static const basic::ZoneRule kZoneRulesSyria[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4874,7 +4874,7 @@ static const basic::ZoneRule kZoneRulesTaiwan[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -4906,7 +4906,7 @@ static const basic::ZoneRule kZoneRulesThule[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -4918,7 +4918,7 @@ static const basic::ZoneRule kZoneRulesThule[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -4930,7 +4930,7 @@ static const basic::ZoneRule kZoneRulesThule[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -4942,7 +4942,7 @@ static const basic::ZoneRule kZoneRulesThule[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -4954,7 +4954,7 @@ static const basic::ZoneRule kZoneRulesThule[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -4986,7 +4986,7 @@ static const basic::ZoneRule kZoneRulesTonga[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4998,7 +4998,7 @@ static const basic::ZoneRule kZoneRulesTonga[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 7 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -5010,7 +5010,7 @@ static const basic::ZoneRule kZoneRulesTonga[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 19 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5022,7 +5022,7 @@ static const basic::ZoneRule kZoneRulesTonga[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -5034,7 +5034,7 @@ static const basic::ZoneRule kZoneRulesTonga[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5046,7 +5046,7 @@ static const basic::ZoneRule kZoneRulesTonga[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -5058,7 +5058,7 @@ static const basic::ZoneRule kZoneRulesTonga[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5090,7 +5090,7 @@ static const basic::ZoneRule kZoneRulesTunisia[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5102,7 +5102,7 @@ static const basic::ZoneRule kZoneRulesTunisia[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -5114,7 +5114,7 @@ static const basic::ZoneRule kZoneRulesTunisia[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 30 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5126,7 +5126,7 @@ static const basic::ZoneRule kZoneRulesTunisia[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -5138,7 +5138,7 @@ static const basic::ZoneRule kZoneRulesTunisia[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5170,7 +5170,7 @@ static const basic::ZoneRule kZoneRulesUS[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -5182,7 +5182,7 @@ static const basic::ZoneRule kZoneRulesUS[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -5194,7 +5194,7 @@ static const basic::ZoneRule kZoneRulesUS[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -5206,7 +5206,7 @@ static const basic::ZoneRule kZoneRulesUS[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -5218,7 +5218,7 @@ static const basic::ZoneRule kZoneRulesUS[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -5250,7 +5250,7 @@ static const basic::ZoneRule kZoneRulesUruguay[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 28 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5262,7 +5262,7 @@ static const basic::ZoneRule kZoneRulesUruguay[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 19 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -5274,7 +5274,7 @@ static const basic::ZoneRule kZoneRulesUruguay[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 27 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5286,7 +5286,7 @@ static const basic::ZoneRule kZoneRulesUruguay[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 9 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -5298,7 +5298,7 @@ static const basic::ZoneRule kZoneRulesUruguay[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5310,7 +5310,7 @@ static const basic::ZoneRule kZoneRulesUruguay[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -5342,7 +5342,7 @@ static const basic::ZoneRule kZoneRulesVanuatu[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 23 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5374,7 +5374,7 @@ static const basic::ZoneRule kZoneRulesWinn[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -5386,7 +5386,7 @@ static const basic::ZoneRule kZoneRulesWinn[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -5398,7 +5398,7 @@ static const basic::ZoneRule kZoneRulesWinn[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -5430,7 +5430,7 @@ static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 6 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -5442,7 +5442,7 @@ static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 2 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -5454,7 +5454,7 @@ static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 3 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -5466,7 +5466,7 @@ static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 14 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -5478,7 +5478,7 @@ static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 6 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -5490,7 +5490,7 @@ static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 9 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -5502,7 +5502,7 @@ static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 24 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -5514,7 +5514,7 @@ static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 29 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -5526,7 +5526,7 @@ static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 7 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -5538,7 +5538,7 @@ static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 28 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -5550,7 +5550,7 @@ static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 3 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -5562,7 +5562,7 @@ static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 7 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -5574,7 +5574,7 @@ static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -5586,7 +5586,7 @@ static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -5598,7 +5598,7 @@ static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 9 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -5610,7 +5610,7 @@ static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 26 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -5622,7 +5622,7 @@ static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -5634,7 +5634,7 @@ static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 16 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -5646,7 +5646,7 @@ static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 5 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -5658,7 +5658,7 @@ static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 27 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -5670,7 +5670,7 @@ static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 12 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -5682,7 +5682,7 @@ static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -5694,7 +5694,7 @@ static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 2 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -5706,7 +5706,7 @@ static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 26 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -5718,7 +5718,7 @@ static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 23 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -5730,7 +5730,7 @@ static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 23 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -5742,7 +5742,7 @@ static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, diff --git a/src/ace_time/zonedbx/zone_infos.cpp b/src/ace_time/zonedbx/zone_infos.cpp index 389d927d8..4fd4ee21b 100644 --- a/src/ace_time/zonedbx/zone_infos.cpp +++ b/src/ace_time/zonedbx/zone_infos.cpp @@ -55,7 +55,7 @@ static const extended::ZoneEra kZoneEraAfrica_Abidjan[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -90,7 +90,7 @@ static const extended::ZoneEra kZoneEraAfrica_Accra[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -125,7 +125,7 @@ static const extended::ZoneEra kZoneEraAfrica_Algiers[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -160,7 +160,7 @@ static const extended::ZoneEra kZoneEraAfrica_Bissau[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -195,7 +195,7 @@ static const extended::ZoneEra kZoneEraAfrica_Cairo[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -230,7 +230,7 @@ static const extended::ZoneEra kZoneEraAfrica_Casablanca[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 28 /*untilDay*/, 12 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 1:00 Morocco +01/+00 { @@ -242,7 +242,7 @@ static const extended::ZoneEra kZoneEraAfrica_Casablanca[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -277,7 +277,7 @@ static const extended::ZoneEra kZoneEraAfrica_Ceuta[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -312,7 +312,7 @@ static const extended::ZoneEra kZoneEraAfrica_El_Aaiun[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 28 /*untilDay*/, 12 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 1:00 Morocco +01/+00 { @@ -324,7 +324,7 @@ static const extended::ZoneEra kZoneEraAfrica_El_Aaiun[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -359,7 +359,7 @@ static const extended::ZoneEra kZoneEraAfrica_Johannesburg[] ACE_TIME_PROGMEM = 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -394,7 +394,7 @@ static const extended::ZoneEra kZoneEraAfrica_Juba[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 15 /*untilDay*/, 48 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 3:00 - EAT { @@ -406,7 +406,7 @@ static const extended::ZoneEra kZoneEraAfrica_Juba[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -441,7 +441,7 @@ static const extended::ZoneEra kZoneEraAfrica_Khartoum[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 15 /*untilDay*/, 48 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 3:00 - EAT 2017 Nov 1 { @@ -453,7 +453,7 @@ static const extended::ZoneEra kZoneEraAfrica_Khartoum[] ACE_TIME_PROGMEM = { 11 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 2:00 - CAT { @@ -465,7 +465,7 @@ static const extended::ZoneEra kZoneEraAfrica_Khartoum[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -500,7 +500,7 @@ static const extended::ZoneEra kZoneEraAfrica_Lagos[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -535,7 +535,7 @@ static const extended::ZoneEra kZoneEraAfrica_Maputo[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -570,7 +570,7 @@ static const extended::ZoneEra kZoneEraAfrica_Monrovia[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -605,7 +605,7 @@ static const extended::ZoneEra kZoneEraAfrica_Nairobi[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -640,7 +640,7 @@ static const extended::ZoneEra kZoneEraAfrica_Ndjamena[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -675,7 +675,7 @@ static const extended::ZoneEra kZoneEraAfrica_Sao_Tome[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 4 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 1:00 - WAT 2019 Jan 1 02:00 { @@ -687,7 +687,7 @@ static const extended::ZoneEra kZoneEraAfrica_Sao_Tome[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 0:00 - GMT { @@ -699,7 +699,7 @@ static const extended::ZoneEra kZoneEraAfrica_Sao_Tome[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -734,7 +734,7 @@ static const extended::ZoneEra kZoneEraAfrica_Tripoli[] ACE_TIME_PROGMEM = { 11 /*untilMonth*/, 10 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 1:00 Libya CE%sT 2013 Oct 25 2:00 { @@ -746,7 +746,7 @@ static const extended::ZoneEra kZoneEraAfrica_Tripoli[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 25 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 2:00 - EET { @@ -758,7 +758,7 @@ static const extended::ZoneEra kZoneEraAfrica_Tripoli[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -793,7 +793,7 @@ static const extended::ZoneEra kZoneEraAfrica_Tunis[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -828,7 +828,7 @@ static const extended::ZoneEra kZoneEraAfrica_Windhoek[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -863,7 +863,7 @@ static const extended::ZoneEra kZoneEraAmerica_Adak[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -898,7 +898,7 @@ static const extended::ZoneEra kZoneEraAmerica_Anchorage[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -933,7 +933,7 @@ static const extended::ZoneEra kZoneEraAmerica_Araguaina[] ACE_TIME_PROGMEM = { 9 /*untilMonth*/, 24 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 - -03 2012 Oct 21 { @@ -945,7 +945,7 @@ static const extended::ZoneEra kZoneEraAmerica_Araguaina[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 21 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 Brazil -03/-02 2013 Sep { @@ -957,7 +957,7 @@ static const extended::ZoneEra kZoneEraAmerica_Araguaina[] ACE_TIME_PROGMEM = { 9 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 - -03 { @@ -969,7 +969,7 @@ static const extended::ZoneEra kZoneEraAmerica_Araguaina[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1004,7 +1004,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Buenos_Aires[] ACE_TIME 10 /*untilMonth*/, 3 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 Arg -04/-03 2000 Mar 3 { @@ -1016,7 +1016,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Buenos_Aires[] ACE_TIME 3 /*untilMonth*/, 3 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 Arg -03/-02 { @@ -1028,7 +1028,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Buenos_Aires[] ACE_TIME 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1063,7 +1063,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Catamarca[] ACE_TIME_PR 10 /*untilMonth*/, 3 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 Arg -04/-03 2000 Mar 3 { @@ -1075,7 +1075,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Catamarca[] ACE_TIME_PR 3 /*untilMonth*/, 3 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 - -03 2004 Jun 1 { @@ -1087,7 +1087,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Catamarca[] ACE_TIME_PR 6 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 - -04 2004 Jun 20 { @@ -1099,7 +1099,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Catamarca[] ACE_TIME_PR 6 /*untilMonth*/, 20 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 Arg -03/-02 2008 Oct 18 { @@ -1111,7 +1111,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Catamarca[] ACE_TIME_PR 10 /*untilMonth*/, 18 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 - -03 { @@ -1123,7 +1123,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Catamarca[] ACE_TIME_PR 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1158,7 +1158,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Cordoba[] ACE_TIME_PROG 10 /*untilMonth*/, 3 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 Arg -04/-03 2000 Mar 3 { @@ -1170,7 +1170,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Cordoba[] ACE_TIME_PROG 3 /*untilMonth*/, 3 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 Arg -03/-02 { @@ -1182,7 +1182,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Cordoba[] ACE_TIME_PROG 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1217,7 +1217,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Jujuy[] ACE_TIME_PROGME 10 /*untilMonth*/, 3 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 Arg -04/-03 2000 Mar 3 { @@ -1229,7 +1229,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Jujuy[] ACE_TIME_PROGME 3 /*untilMonth*/, 3 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 Arg -03/-02 2008 Oct 18 { @@ -1241,7 +1241,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Jujuy[] ACE_TIME_PROGME 10 /*untilMonth*/, 18 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 - -03 { @@ -1253,7 +1253,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Jujuy[] ACE_TIME_PROGME 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1288,7 +1288,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_La_Rioja[] ACE_TIME_PRO 10 /*untilMonth*/, 3 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 Arg -04/-03 2000 Mar 3 { @@ -1300,7 +1300,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_La_Rioja[] ACE_TIME_PRO 3 /*untilMonth*/, 3 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 - -03 2004 Jun 1 { @@ -1312,7 +1312,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_La_Rioja[] ACE_TIME_PRO 6 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 - -04 2004 Jun 20 { @@ -1324,7 +1324,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_La_Rioja[] ACE_TIME_PRO 6 /*untilMonth*/, 20 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 Arg -03/-02 2008 Oct 18 { @@ -1336,7 +1336,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_La_Rioja[] ACE_TIME_PRO 10 /*untilMonth*/, 18 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 - -03 { @@ -1348,7 +1348,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_La_Rioja[] ACE_TIME_PRO 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1383,7 +1383,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Mendoza[] ACE_TIME_PROG 10 /*untilMonth*/, 3 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 Arg -04/-03 2000 Mar 3 { @@ -1395,7 +1395,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Mendoza[] ACE_TIME_PROG 3 /*untilMonth*/, 3 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 - -03 2004 May 23 { @@ -1407,7 +1407,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Mendoza[] ACE_TIME_PROG 5 /*untilMonth*/, 23 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 - -04 2004 Sep 26 { @@ -1419,7 +1419,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Mendoza[] ACE_TIME_PROG 9 /*untilMonth*/, 26 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 Arg -03/-02 2008 Oct 18 { @@ -1431,7 +1431,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Mendoza[] ACE_TIME_PROG 10 /*untilMonth*/, 18 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 - -03 { @@ -1443,7 +1443,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Mendoza[] ACE_TIME_PROG 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1478,7 +1478,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Rio_Gallegos[] ACE_TIME 10 /*untilMonth*/, 3 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 Arg -04/-03 2000 Mar 3 { @@ -1490,7 +1490,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Rio_Gallegos[] ACE_TIME 3 /*untilMonth*/, 3 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 - -03 2004 Jun 1 { @@ -1502,7 +1502,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Rio_Gallegos[] ACE_TIME 6 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 - -04 2004 Jun 20 { @@ -1514,7 +1514,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Rio_Gallegos[] ACE_TIME 6 /*untilMonth*/, 20 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 Arg -03/-02 2008 Oct 18 { @@ -1526,7 +1526,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Rio_Gallegos[] ACE_TIME 10 /*untilMonth*/, 18 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 - -03 { @@ -1538,7 +1538,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Rio_Gallegos[] ACE_TIME 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1573,7 +1573,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Salta[] ACE_TIME_PROGME 10 /*untilMonth*/, 3 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 Arg -04/-03 2000 Mar 3 { @@ -1585,7 +1585,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Salta[] ACE_TIME_PROGME 3 /*untilMonth*/, 3 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 Arg -03/-02 2008 Oct 18 { @@ -1597,7 +1597,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Salta[] ACE_TIME_PROGME 10 /*untilMonth*/, 18 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 - -03 { @@ -1609,7 +1609,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Salta[] ACE_TIME_PROGME 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1644,7 +1644,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_San_Juan[] ACE_TIME_PRO 10 /*untilMonth*/, 3 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 Arg -04/-03 2000 Mar 3 { @@ -1656,7 +1656,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_San_Juan[] ACE_TIME_PRO 3 /*untilMonth*/, 3 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 - -03 2004 May 31 { @@ -1668,7 +1668,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_San_Juan[] ACE_TIME_PRO 5 /*untilMonth*/, 31 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 - -04 2004 Jul 25 { @@ -1680,7 +1680,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_San_Juan[] ACE_TIME_PRO 7 /*untilMonth*/, 25 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 Arg -03/-02 2008 Oct 18 { @@ -1692,7 +1692,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_San_Juan[] ACE_TIME_PRO 10 /*untilMonth*/, 18 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 - -03 { @@ -1704,7 +1704,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_San_Juan[] ACE_TIME_PRO 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1739,7 +1739,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_San_Luis[] ACE_TIME_PRO 10 /*untilMonth*/, 3 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 1:00 -03 2000 Mar 3 { @@ -1751,7 +1751,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_San_Luis[] ACE_TIME_PRO 3 /*untilMonth*/, 3 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 - -03 2004 May 31 { @@ -1763,7 +1763,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_San_Luis[] ACE_TIME_PRO 5 /*untilMonth*/, 31 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 - -04 2004 Jul 25 { @@ -1775,7 +1775,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_San_Luis[] ACE_TIME_PRO 7 /*untilMonth*/, 25 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 Arg -03/-02 2008 Jan 21 { @@ -1787,7 +1787,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_San_Luis[] ACE_TIME_PRO 1 /*untilMonth*/, 21 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 SanLuis -04/-03 2009 Oct 11 { @@ -1799,7 +1799,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_San_Luis[] ACE_TIME_PRO 10 /*untilMonth*/, 11 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 - -03 { @@ -1811,7 +1811,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_San_Luis[] ACE_TIME_PRO 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1846,7 +1846,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Tucuman[] ACE_TIME_PROG 10 /*untilMonth*/, 3 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 Arg -04/-03 2000 Mar 3 { @@ -1858,7 +1858,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Tucuman[] ACE_TIME_PROG 3 /*untilMonth*/, 3 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 - -03 2004 Jun 1 { @@ -1870,7 +1870,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Tucuman[] ACE_TIME_PROG 6 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 - -04 2004 Jun 13 { @@ -1882,7 +1882,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Tucuman[] ACE_TIME_PROG 6 /*untilMonth*/, 13 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 Arg -03/-02 { @@ -1894,7 +1894,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Tucuman[] ACE_TIME_PROG 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1929,7 +1929,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Ushuaia[] ACE_TIME_PROG 10 /*untilMonth*/, 3 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 Arg -04/-03 2000 Mar 3 { @@ -1941,7 +1941,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Ushuaia[] ACE_TIME_PROG 3 /*untilMonth*/, 3 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 - -03 2004 May 30 { @@ -1953,7 +1953,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Ushuaia[] ACE_TIME_PROG 5 /*untilMonth*/, 30 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 - -04 2004 Jun 20 { @@ -1965,7 +1965,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Ushuaia[] ACE_TIME_PROG 6 /*untilMonth*/, 20 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 Arg -03/-02 2008 Oct 18 { @@ -1977,7 +1977,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Ushuaia[] ACE_TIME_PROG 10 /*untilMonth*/, 18 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 - -03 { @@ -1989,7 +1989,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Ushuaia[] ACE_TIME_PROG 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2024,7 +2024,7 @@ static const extended::ZoneEra kZoneEraAmerica_Asuncion[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2059,7 +2059,7 @@ static const extended::ZoneEra kZoneEraAmerica_Atikokan[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2094,7 +2094,7 @@ static const extended::ZoneEra kZoneEraAmerica_Bahia[] ACE_TIME_PROGMEM = { 9 /*untilMonth*/, 24 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 - -03 2011 Oct 16 { @@ -2106,7 +2106,7 @@ static const extended::ZoneEra kZoneEraAmerica_Bahia[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 16 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 Brazil -03/-02 2012 Oct 21 { @@ -2118,7 +2118,7 @@ static const extended::ZoneEra kZoneEraAmerica_Bahia[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 21 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 - -03 { @@ -2130,7 +2130,7 @@ static const extended::ZoneEra kZoneEraAmerica_Bahia[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2165,7 +2165,7 @@ static const extended::ZoneEra kZoneEraAmerica_Bahia_Banderas[] ACE_TIME_PROGMEM 4 /*untilMonth*/, 4 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -6:00 Mexico C%sT { @@ -2177,7 +2177,7 @@ static const extended::ZoneEra kZoneEraAmerica_Bahia_Banderas[] ACE_TIME_PROGMEM 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2212,7 +2212,7 @@ static const extended::ZoneEra kZoneEraAmerica_Barbados[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2247,7 +2247,7 @@ static const extended::ZoneEra kZoneEraAmerica_Belem[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2282,7 +2282,7 @@ static const extended::ZoneEra kZoneEraAmerica_Belize[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2317,7 +2317,7 @@ static const extended::ZoneEra kZoneEraAmerica_Blanc_Sablon[] ACE_TIME_PROGMEM = 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2352,7 +2352,7 @@ static const extended::ZoneEra kZoneEraAmerica_Boa_Vista[] ACE_TIME_PROGMEM = { 9 /*untilMonth*/, 30 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 Brazil -04/-03 2000 Oct 15 { @@ -2364,7 +2364,7 @@ static const extended::ZoneEra kZoneEraAmerica_Boa_Vista[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 15 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 - -04 { @@ -2376,7 +2376,7 @@ static const extended::ZoneEra kZoneEraAmerica_Boa_Vista[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2411,7 +2411,7 @@ static const extended::ZoneEra kZoneEraAmerica_Bogota[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2446,7 +2446,7 @@ static const extended::ZoneEra kZoneEraAmerica_Boise[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2481,7 +2481,7 @@ static const extended::ZoneEra kZoneEraAmerica_Cambridge_Bay[] ACE_TIME_PROGMEM 10 /*untilMonth*/, 31 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -6:00 Canada C%sT 2000 Oct 29 2:00 { @@ -2493,7 +2493,7 @@ static const extended::ZoneEra kZoneEraAmerica_Cambridge_Bay[] ACE_TIME_PROGMEM 10 /*untilMonth*/, 29 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -5:00 - EST 2000 Nov 5 0:00 { @@ -2505,7 +2505,7 @@ static const extended::ZoneEra kZoneEraAmerica_Cambridge_Bay[] ACE_TIME_PROGMEM 11 /*untilMonth*/, 5 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -6:00 - CST 2001 Apr 1 3:00 { @@ -2517,7 +2517,7 @@ static const extended::ZoneEra kZoneEraAmerica_Cambridge_Bay[] ACE_TIME_PROGMEM 4 /*untilMonth*/, 1 /*untilDay*/, 12 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -7:00 Canada M%sT { @@ -2529,7 +2529,7 @@ static const extended::ZoneEra kZoneEraAmerica_Cambridge_Bay[] ACE_TIME_PROGMEM 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2564,7 +2564,7 @@ static const extended::ZoneEra kZoneEraAmerica_Campo_Grande[] ACE_TIME_PROGMEM = 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2599,7 +2599,7 @@ static const extended::ZoneEra kZoneEraAmerica_Cancun[] ACE_TIME_PROGMEM = { 2 /*untilMonth*/, 1 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -5:00 - EST { @@ -2611,7 +2611,7 @@ static const extended::ZoneEra kZoneEraAmerica_Cancun[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2646,7 +2646,7 @@ static const extended::ZoneEra kZoneEraAmerica_Caracas[] ACE_TIME_PROGMEM = { 12 /*untilMonth*/, 9 /*untilDay*/, 12 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:30 - -0430 2016 May 1 2:30 { @@ -2658,7 +2658,7 @@ static const extended::ZoneEra kZoneEraAmerica_Caracas[] ACE_TIME_PROGMEM = { 5 /*untilMonth*/, 1 /*untilDay*/, 10 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 - -04 { @@ -2670,7 +2670,7 @@ static const extended::ZoneEra kZoneEraAmerica_Caracas[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2705,7 +2705,7 @@ static const extended::ZoneEra kZoneEraAmerica_Cayenne[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2740,7 +2740,7 @@ static const extended::ZoneEra kZoneEraAmerica_Chicago[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2775,7 +2775,7 @@ static const extended::ZoneEra kZoneEraAmerica_Chihuahua[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2810,7 +2810,7 @@ static const extended::ZoneEra kZoneEraAmerica_Costa_Rica[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2845,7 +2845,7 @@ static const extended::ZoneEra kZoneEraAmerica_Creston[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2880,7 +2880,7 @@ static const extended::ZoneEra kZoneEraAmerica_Cuiaba[] ACE_TIME_PROGMEM = { 9 /*untilMonth*/, 24 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 - -04 2004 Oct 1 { @@ -2892,7 +2892,7 @@ static const extended::ZoneEra kZoneEraAmerica_Cuiaba[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 Brazil -04/-03 { @@ -2904,7 +2904,7 @@ static const extended::ZoneEra kZoneEraAmerica_Cuiaba[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2939,7 +2939,7 @@ static const extended::ZoneEra kZoneEraAmerica_Curacao[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2974,7 +2974,7 @@ static const extended::ZoneEra kZoneEraAmerica_Danmarkshavn[] ACE_TIME_PROGMEM = 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3009,7 +3009,7 @@ static const extended::ZoneEra kZoneEraAmerica_Dawson[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3044,7 +3044,7 @@ static const extended::ZoneEra kZoneEraAmerica_Dawson_Creek[] ACE_TIME_PROGMEM = 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3079,7 +3079,7 @@ static const extended::ZoneEra kZoneEraAmerica_Denver[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3114,7 +3114,7 @@ static const extended::ZoneEra kZoneEraAmerica_Detroit[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3149,7 +3149,7 @@ static const extended::ZoneEra kZoneEraAmerica_Edmonton[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3184,7 +3184,7 @@ static const extended::ZoneEra kZoneEraAmerica_Eirunepe[] ACE_TIME_PROGMEM = { 6 /*untilMonth*/, 24 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 - -04 2013 Nov 10 { @@ -3196,7 +3196,7 @@ static const extended::ZoneEra kZoneEraAmerica_Eirunepe[] ACE_TIME_PROGMEM = { 11 /*untilMonth*/, 10 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -5:00 - -05 { @@ -3208,7 +3208,7 @@ static const extended::ZoneEra kZoneEraAmerica_Eirunepe[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3243,7 +3243,7 @@ static const extended::ZoneEra kZoneEraAmerica_El_Salvador[] ACE_TIME_PROGMEM = 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3278,7 +3278,7 @@ static const extended::ZoneEra kZoneEraAmerica_Fort_Nelson[] ACE_TIME_PROGMEM = 3 /*untilMonth*/, 8 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -7:00 - MST { @@ -3290,7 +3290,7 @@ static const extended::ZoneEra kZoneEraAmerica_Fort_Nelson[] ACE_TIME_PROGMEM = 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3325,7 +3325,7 @@ static const extended::ZoneEra kZoneEraAmerica_Fortaleza[] ACE_TIME_PROGMEM = { 9 /*untilMonth*/, 30 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 Brazil -03/-02 2000 Oct 22 { @@ -3337,7 +3337,7 @@ static const extended::ZoneEra kZoneEraAmerica_Fortaleza[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 22 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 - -03 2001 Sep 13 { @@ -3349,7 +3349,7 @@ static const extended::ZoneEra kZoneEraAmerica_Fortaleza[] ACE_TIME_PROGMEM = { 9 /*untilMonth*/, 13 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 Brazil -03/-02 2002 Oct 1 { @@ -3361,7 +3361,7 @@ static const extended::ZoneEra kZoneEraAmerica_Fortaleza[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 - -03 { @@ -3373,7 +3373,7 @@ static const extended::ZoneEra kZoneEraAmerica_Fortaleza[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3408,7 +3408,7 @@ static const extended::ZoneEra kZoneEraAmerica_Glace_Bay[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3443,7 +3443,7 @@ static const extended::ZoneEra kZoneEraAmerica_Godthab[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3478,7 +3478,7 @@ static const extended::ZoneEra kZoneEraAmerica_Goose_Bay[] ACE_TIME_PROGMEM = { 11 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 Canada A%sT { @@ -3490,7 +3490,7 @@ static const extended::ZoneEra kZoneEraAmerica_Goose_Bay[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3525,7 +3525,7 @@ static const extended::ZoneEra kZoneEraAmerica_Grand_Turk[] ACE_TIME_PROGMEM = { 11 /*untilMonth*/, 1 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 - AST 2018 Mar 11 3:00 { @@ -3537,7 +3537,7 @@ static const extended::ZoneEra kZoneEraAmerica_Grand_Turk[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 11 /*untilDay*/, 12 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -5:00 US E%sT { @@ -3549,7 +3549,7 @@ static const extended::ZoneEra kZoneEraAmerica_Grand_Turk[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3584,7 +3584,7 @@ static const extended::ZoneEra kZoneEraAmerica_Guatemala[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3619,7 +3619,7 @@ static const extended::ZoneEra kZoneEraAmerica_Guayaquil[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3654,7 +3654,7 @@ static const extended::ZoneEra kZoneEraAmerica_Guyana[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3689,7 +3689,7 @@ static const extended::ZoneEra kZoneEraAmerica_Halifax[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3724,7 +3724,7 @@ static const extended::ZoneEra kZoneEraAmerica_Havana[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3759,7 +3759,7 @@ static const extended::ZoneEra kZoneEraAmerica_Hermosillo[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -7:00 - MST { @@ -3771,7 +3771,7 @@ static const extended::ZoneEra kZoneEraAmerica_Hermosillo[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3806,7 +3806,7 @@ static const extended::ZoneEra kZoneEraAmerica_Indiana_Indianapolis[] ACE_TIME_P 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -5:00 US E%sT { @@ -3818,7 +3818,7 @@ static const extended::ZoneEra kZoneEraAmerica_Indiana_Indianapolis[] ACE_TIME_P 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3853,7 +3853,7 @@ static const extended::ZoneEra kZoneEraAmerica_Indiana_Knox[] ACE_TIME_PROGMEM = 4 /*untilMonth*/, 2 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -6:00 US C%sT { @@ -3865,7 +3865,7 @@ static const extended::ZoneEra kZoneEraAmerica_Indiana_Knox[] ACE_TIME_PROGMEM = 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3900,7 +3900,7 @@ static const extended::ZoneEra kZoneEraAmerica_Indiana_Marengo[] ACE_TIME_PROGME 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -5:00 US E%sT { @@ -3912,7 +3912,7 @@ static const extended::ZoneEra kZoneEraAmerica_Indiana_Marengo[] ACE_TIME_PROGME 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3947,7 +3947,7 @@ static const extended::ZoneEra kZoneEraAmerica_Indiana_Petersburg[] ACE_TIME_PRO 4 /*untilMonth*/, 2 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -6:00 US C%sT 2007 Nov 4 2:00 { @@ -3959,7 +3959,7 @@ static const extended::ZoneEra kZoneEraAmerica_Indiana_Petersburg[] ACE_TIME_PRO 11 /*untilMonth*/, 4 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -5:00 US E%sT { @@ -3971,7 +3971,7 @@ static const extended::ZoneEra kZoneEraAmerica_Indiana_Petersburg[] ACE_TIME_PRO 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4006,7 +4006,7 @@ static const extended::ZoneEra kZoneEraAmerica_Indiana_Tell_City[] ACE_TIME_PROG 4 /*untilMonth*/, 2 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -6:00 US C%sT { @@ -4018,7 +4018,7 @@ static const extended::ZoneEra kZoneEraAmerica_Indiana_Tell_City[] ACE_TIME_PROG 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4053,7 +4053,7 @@ static const extended::ZoneEra kZoneEraAmerica_Indiana_Vevay[] ACE_TIME_PROGMEM 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -5:00 US E%sT { @@ -4065,7 +4065,7 @@ static const extended::ZoneEra kZoneEraAmerica_Indiana_Vevay[] ACE_TIME_PROGMEM 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4100,7 +4100,7 @@ static const extended::ZoneEra kZoneEraAmerica_Indiana_Vincennes[] ACE_TIME_PROG 4 /*untilMonth*/, 2 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -6:00 US C%sT 2007 Nov 4 2:00 { @@ -4112,7 +4112,7 @@ static const extended::ZoneEra kZoneEraAmerica_Indiana_Vincennes[] ACE_TIME_PROG 11 /*untilMonth*/, 4 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -5:00 US E%sT { @@ -4124,7 +4124,7 @@ static const extended::ZoneEra kZoneEraAmerica_Indiana_Vincennes[] ACE_TIME_PROG 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4159,7 +4159,7 @@ static const extended::ZoneEra kZoneEraAmerica_Indiana_Winamac[] ACE_TIME_PROGME 4 /*untilMonth*/, 2 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -6:00 US C%sT 2007 Mar 11 2:00 { @@ -4171,7 +4171,7 @@ static const extended::ZoneEra kZoneEraAmerica_Indiana_Winamac[] ACE_TIME_PROGME 3 /*untilMonth*/, 11 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -5:00 US E%sT { @@ -4183,7 +4183,7 @@ static const extended::ZoneEra kZoneEraAmerica_Indiana_Winamac[] ACE_TIME_PROGME 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4218,7 +4218,7 @@ static const extended::ZoneEra kZoneEraAmerica_Inuvik[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4253,7 +4253,7 @@ static const extended::ZoneEra kZoneEraAmerica_Iqaluit[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 31 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -6:00 Canada C%sT 2000 Oct 29 2:00 { @@ -4265,7 +4265,7 @@ static const extended::ZoneEra kZoneEraAmerica_Iqaluit[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 29 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -5:00 Canada E%sT { @@ -4277,7 +4277,7 @@ static const extended::ZoneEra kZoneEraAmerica_Iqaluit[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4312,7 +4312,7 @@ static const extended::ZoneEra kZoneEraAmerica_Jamaica[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4347,7 +4347,7 @@ static const extended::ZoneEra kZoneEraAmerica_Juneau[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4382,7 +4382,7 @@ static const extended::ZoneEra kZoneEraAmerica_Kentucky_Louisville[] ACE_TIME_PR 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4417,7 +4417,7 @@ static const extended::ZoneEra kZoneEraAmerica_Kentucky_Monticello[] ACE_TIME_PR 10 /*untilMonth*/, 29 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -5:00 US E%sT { @@ -4429,7 +4429,7 @@ static const extended::ZoneEra kZoneEraAmerica_Kentucky_Monticello[] ACE_TIME_PR 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4464,7 +4464,7 @@ static const extended::ZoneEra kZoneEraAmerica_La_Paz[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4499,7 +4499,7 @@ static const extended::ZoneEra kZoneEraAmerica_Lima[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4534,7 +4534,7 @@ static const extended::ZoneEra kZoneEraAmerica_Los_Angeles[] ACE_TIME_PROGMEM = 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4569,7 +4569,7 @@ static const extended::ZoneEra kZoneEraAmerica_Maceio[] ACE_TIME_PROGMEM = { 9 /*untilMonth*/, 30 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 Brazil -03/-02 2000 Oct 22 { @@ -4581,7 +4581,7 @@ static const extended::ZoneEra kZoneEraAmerica_Maceio[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 22 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 - -03 2001 Sep 13 { @@ -4593,7 +4593,7 @@ static const extended::ZoneEra kZoneEraAmerica_Maceio[] ACE_TIME_PROGMEM = { 9 /*untilMonth*/, 13 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 Brazil -03/-02 2002 Oct 1 { @@ -4605,7 +4605,7 @@ static const extended::ZoneEra kZoneEraAmerica_Maceio[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 - -03 { @@ -4617,7 +4617,7 @@ static const extended::ZoneEra kZoneEraAmerica_Maceio[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4652,7 +4652,7 @@ static const extended::ZoneEra kZoneEraAmerica_Managua[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4687,7 +4687,7 @@ static const extended::ZoneEra kZoneEraAmerica_Manaus[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4722,7 +4722,7 @@ static const extended::ZoneEra kZoneEraAmerica_Martinique[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4757,7 +4757,7 @@ static const extended::ZoneEra kZoneEraAmerica_Matamoros[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -6:00 US C%sT { @@ -4769,7 +4769,7 @@ static const extended::ZoneEra kZoneEraAmerica_Matamoros[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4804,7 +4804,7 @@ static const extended::ZoneEra kZoneEraAmerica_Mazatlan[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4839,7 +4839,7 @@ static const extended::ZoneEra kZoneEraAmerica_Menominee[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4874,7 +4874,7 @@ static const extended::ZoneEra kZoneEraAmerica_Merida[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4909,7 +4909,7 @@ static const extended::ZoneEra kZoneEraAmerica_Metlakatla[] ACE_TIME_PROGMEM = { 11 /*untilMonth*/, 1 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -9:00 US AK%sT 2018 Nov 4 2:00 { @@ -4921,7 +4921,7 @@ static const extended::ZoneEra kZoneEraAmerica_Metlakatla[] ACE_TIME_PROGMEM = { 11 /*untilMonth*/, 4 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -8:00 - PST 2019 Jan 20 2:00 { @@ -4933,7 +4933,7 @@ static const extended::ZoneEra kZoneEraAmerica_Metlakatla[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 20 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -9:00 US AK%sT { @@ -4945,7 +4945,7 @@ static const extended::ZoneEra kZoneEraAmerica_Metlakatla[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4980,7 +4980,7 @@ static const extended::ZoneEra kZoneEraAmerica_Mexico_City[] ACE_TIME_PROGMEM = 9 /*untilMonth*/, 30 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -6:00 - CST 2002 Feb 20 { @@ -4992,7 +4992,7 @@ static const extended::ZoneEra kZoneEraAmerica_Mexico_City[] ACE_TIME_PROGMEM = 2 /*untilMonth*/, 20 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -6:00 Mexico C%sT { @@ -5004,7 +5004,7 @@ static const extended::ZoneEra kZoneEraAmerica_Mexico_City[] ACE_TIME_PROGMEM = 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5039,7 +5039,7 @@ static const extended::ZoneEra kZoneEraAmerica_Miquelon[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5074,7 +5074,7 @@ static const extended::ZoneEra kZoneEraAmerica_Moncton[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 Canada A%sT { @@ -5086,7 +5086,7 @@ static const extended::ZoneEra kZoneEraAmerica_Moncton[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5121,7 +5121,7 @@ static const extended::ZoneEra kZoneEraAmerica_Monterrey[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5156,7 +5156,7 @@ static const extended::ZoneEra kZoneEraAmerica_Montevideo[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5191,7 +5191,7 @@ static const extended::ZoneEra kZoneEraAmerica_Nassau[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5226,7 +5226,7 @@ static const extended::ZoneEra kZoneEraAmerica_New_York[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5261,7 +5261,7 @@ static const extended::ZoneEra kZoneEraAmerica_Nipigon[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5296,7 +5296,7 @@ static const extended::ZoneEra kZoneEraAmerica_Nome[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5331,7 +5331,7 @@ static const extended::ZoneEra kZoneEraAmerica_Noronha[] ACE_TIME_PROGMEM = { 9 /*untilMonth*/, 30 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -2:00 Brazil -02/-01 2000 Oct 15 { @@ -5343,7 +5343,7 @@ static const extended::ZoneEra kZoneEraAmerica_Noronha[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 15 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -2:00 - -02 2001 Sep 13 { @@ -5355,7 +5355,7 @@ static const extended::ZoneEra kZoneEraAmerica_Noronha[] ACE_TIME_PROGMEM = { 9 /*untilMonth*/, 13 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -2:00 Brazil -02/-01 2002 Oct 1 { @@ -5367,7 +5367,7 @@ static const extended::ZoneEra kZoneEraAmerica_Noronha[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -2:00 - -02 { @@ -5379,7 +5379,7 @@ static const extended::ZoneEra kZoneEraAmerica_Noronha[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5414,7 +5414,7 @@ static const extended::ZoneEra kZoneEraAmerica_North_Dakota_Beulah[] ACE_TIME_PR 11 /*untilMonth*/, 7 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -6:00 US C%sT { @@ -5426,7 +5426,7 @@ static const extended::ZoneEra kZoneEraAmerica_North_Dakota_Beulah[] ACE_TIME_PR 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5461,7 +5461,7 @@ static const extended::ZoneEra kZoneEraAmerica_North_Dakota_Center[] ACE_TIME_PR 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5496,7 +5496,7 @@ static const extended::ZoneEra kZoneEraAmerica_North_Dakota_New_Salem[] ACE_TIME 10 /*untilMonth*/, 26 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -6:00 US C%sT { @@ -5508,7 +5508,7 @@ static const extended::ZoneEra kZoneEraAmerica_North_Dakota_New_Salem[] ACE_TIME 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5543,7 +5543,7 @@ static const extended::ZoneEra kZoneEraAmerica_Ojinaga[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -7:00 US M%sT { @@ -5555,7 +5555,7 @@ static const extended::ZoneEra kZoneEraAmerica_Ojinaga[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5590,7 +5590,7 @@ static const extended::ZoneEra kZoneEraAmerica_Panama[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5625,7 +5625,7 @@ static const extended::ZoneEra kZoneEraAmerica_Pangnirtung[] ACE_TIME_PROGMEM = 10 /*untilMonth*/, 31 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -6:00 Canada C%sT 2000 Oct 29 2:00 { @@ -5637,7 +5637,7 @@ static const extended::ZoneEra kZoneEraAmerica_Pangnirtung[] ACE_TIME_PROGMEM = 10 /*untilMonth*/, 29 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -5:00 Canada E%sT { @@ -5649,7 +5649,7 @@ static const extended::ZoneEra kZoneEraAmerica_Pangnirtung[] ACE_TIME_PROGMEM = 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5684,7 +5684,7 @@ static const extended::ZoneEra kZoneEraAmerica_Paramaribo[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5719,7 +5719,7 @@ static const extended::ZoneEra kZoneEraAmerica_Phoenix[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5754,7 +5754,7 @@ static const extended::ZoneEra kZoneEraAmerica_Port_au_Prince[] ACE_TIME_PROGMEM 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5789,7 +5789,7 @@ static const extended::ZoneEra kZoneEraAmerica_Port_of_Spain[] ACE_TIME_PROGMEM 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5824,7 +5824,7 @@ static const extended::ZoneEra kZoneEraAmerica_Porto_Velho[] ACE_TIME_PROGMEM = 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5859,7 +5859,7 @@ static const extended::ZoneEra kZoneEraAmerica_Puerto_Rico[] ACE_TIME_PROGMEM = 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5894,7 +5894,7 @@ static const extended::ZoneEra kZoneEraAmerica_Punta_Arenas[] ACE_TIME_PROGMEM = 12 /*untilMonth*/, 4 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 - -03 { @@ -5906,7 +5906,7 @@ static const extended::ZoneEra kZoneEraAmerica_Punta_Arenas[] ACE_TIME_PROGMEM = 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5941,7 +5941,7 @@ static const extended::ZoneEra kZoneEraAmerica_Rainy_River[] ACE_TIME_PROGMEM = 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5976,7 +5976,7 @@ static const extended::ZoneEra kZoneEraAmerica_Rankin_Inlet[] ACE_TIME_PROGMEM = 10 /*untilMonth*/, 29 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -5:00 - EST 2001 Apr 1 3:00 { @@ -5988,7 +5988,7 @@ static const extended::ZoneEra kZoneEraAmerica_Rankin_Inlet[] ACE_TIME_PROGMEM = 4 /*untilMonth*/, 1 /*untilDay*/, 12 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -6:00 Canada C%sT { @@ -6000,7 +6000,7 @@ static const extended::ZoneEra kZoneEraAmerica_Rankin_Inlet[] ACE_TIME_PROGMEM = 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6035,7 +6035,7 @@ static const extended::ZoneEra kZoneEraAmerica_Recife[] ACE_TIME_PROGMEM = { 9 /*untilMonth*/, 30 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 Brazil -03/-02 2000 Oct 15 { @@ -6047,7 +6047,7 @@ static const extended::ZoneEra kZoneEraAmerica_Recife[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 15 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 - -03 2001 Sep 13 { @@ -6059,7 +6059,7 @@ static const extended::ZoneEra kZoneEraAmerica_Recife[] ACE_TIME_PROGMEM = { 9 /*untilMonth*/, 13 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 Brazil -03/-02 2002 Oct 1 { @@ -6071,7 +6071,7 @@ static const extended::ZoneEra kZoneEraAmerica_Recife[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 - -03 { @@ -6083,7 +6083,7 @@ static const extended::ZoneEra kZoneEraAmerica_Recife[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6118,7 +6118,7 @@ static const extended::ZoneEra kZoneEraAmerica_Regina[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6153,7 +6153,7 @@ static const extended::ZoneEra kZoneEraAmerica_Resolute[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 29 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -5:00 - EST 2001 Apr 1 3:00 { @@ -6165,7 +6165,7 @@ static const extended::ZoneEra kZoneEraAmerica_Resolute[] ACE_TIME_PROGMEM = { 4 /*untilMonth*/, 1 /*untilDay*/, 12 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -6:00 Canada C%sT 2006 Oct 29 2:00 { @@ -6177,7 +6177,7 @@ static const extended::ZoneEra kZoneEraAmerica_Resolute[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 29 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -5:00 - EST 2007 Mar 11 3:00 { @@ -6189,7 +6189,7 @@ static const extended::ZoneEra kZoneEraAmerica_Resolute[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 11 /*untilDay*/, 12 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -6:00 Canada C%sT { @@ -6201,7 +6201,7 @@ static const extended::ZoneEra kZoneEraAmerica_Resolute[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6236,7 +6236,7 @@ static const extended::ZoneEra kZoneEraAmerica_Rio_Branco[] ACE_TIME_PROGMEM = { 6 /*untilMonth*/, 24 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 - -04 2013 Nov 10 { @@ -6248,7 +6248,7 @@ static const extended::ZoneEra kZoneEraAmerica_Rio_Branco[] ACE_TIME_PROGMEM = { 11 /*untilMonth*/, 10 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -5:00 - -05 { @@ -6260,7 +6260,7 @@ static const extended::ZoneEra kZoneEraAmerica_Rio_Branco[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6295,7 +6295,7 @@ static const extended::ZoneEra kZoneEraAmerica_Santarem[] ACE_TIME_PROGMEM = { 6 /*untilMonth*/, 24 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 - -03 { @@ -6307,7 +6307,7 @@ static const extended::ZoneEra kZoneEraAmerica_Santarem[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6342,7 +6342,7 @@ static const extended::ZoneEra kZoneEraAmerica_Santiago[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6377,7 +6377,7 @@ static const extended::ZoneEra kZoneEraAmerica_Santo_Domingo[] ACE_TIME_PROGMEM 10 /*untilMonth*/, 29 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -5:00 US E%sT 2000 Dec 3 1:00 { @@ -6389,7 +6389,7 @@ static const extended::ZoneEra kZoneEraAmerica_Santo_Domingo[] ACE_TIME_PROGMEM 12 /*untilMonth*/, 3 /*untilDay*/, 4 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 - AST { @@ -6401,7 +6401,7 @@ static const extended::ZoneEra kZoneEraAmerica_Santo_Domingo[] ACE_TIME_PROGMEM 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6436,7 +6436,7 @@ static const extended::ZoneEra kZoneEraAmerica_Sao_Paulo[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6471,7 +6471,7 @@ static const extended::ZoneEra kZoneEraAmerica_Scoresbysund[] ACE_TIME_PROGMEM = 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6506,7 +6506,7 @@ static const extended::ZoneEra kZoneEraAmerica_Sitka[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6541,7 +6541,7 @@ static const extended::ZoneEra kZoneEraAmerica_St_Johns[] ACE_TIME_PROGMEM = { 11 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:30 Canada N%sT { @@ -6553,7 +6553,7 @@ static const extended::ZoneEra kZoneEraAmerica_St_Johns[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6588,7 +6588,7 @@ static const extended::ZoneEra kZoneEraAmerica_Swift_Current[] ACE_TIME_PROGMEM 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6623,7 +6623,7 @@ static const extended::ZoneEra kZoneEraAmerica_Tegucigalpa[] ACE_TIME_PROGMEM = 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6658,7 +6658,7 @@ static const extended::ZoneEra kZoneEraAmerica_Thule[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6693,7 +6693,7 @@ static const extended::ZoneEra kZoneEraAmerica_Thunder_Bay[] ACE_TIME_PROGMEM = 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6728,7 +6728,7 @@ static const extended::ZoneEra kZoneEraAmerica_Tijuana[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -8:00 US P%sT 2002 Feb 20 { @@ -6740,7 +6740,7 @@ static const extended::ZoneEra kZoneEraAmerica_Tijuana[] ACE_TIME_PROGMEM = { 2 /*untilMonth*/, 20 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -8:00 Mexico P%sT 2010 { @@ -6752,7 +6752,7 @@ static const extended::ZoneEra kZoneEraAmerica_Tijuana[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -8:00 US P%sT { @@ -6764,7 +6764,7 @@ static const extended::ZoneEra kZoneEraAmerica_Tijuana[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6799,7 +6799,7 @@ static const extended::ZoneEra kZoneEraAmerica_Toronto[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6834,7 +6834,7 @@ static const extended::ZoneEra kZoneEraAmerica_Vancouver[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6869,7 +6869,7 @@ static const extended::ZoneEra kZoneEraAmerica_Whitehorse[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6904,7 +6904,7 @@ static const extended::ZoneEra kZoneEraAmerica_Winnipeg[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -6:00 Canada C%sT { @@ -6916,7 +6916,7 @@ static const extended::ZoneEra kZoneEraAmerica_Winnipeg[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6951,7 +6951,7 @@ static const extended::ZoneEra kZoneEraAmerica_Yakutat[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6986,7 +6986,7 @@ static const extended::ZoneEra kZoneEraAmerica_Yellowknife[] ACE_TIME_PROGMEM = 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7021,7 +7021,7 @@ static const extended::ZoneEra kZoneEraAntarctica_Casey[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 18 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 11:00 - +11 2010 Mar 5 2:00 { @@ -7033,7 +7033,7 @@ static const extended::ZoneEra kZoneEraAntarctica_Casey[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 5 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 8:00 - +08 2011 Oct 28 2:00 { @@ -7045,7 +7045,7 @@ static const extended::ZoneEra kZoneEraAntarctica_Casey[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 28 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 11:00 - +11 2012 Feb 21 17:00u { @@ -7057,7 +7057,7 @@ static const extended::ZoneEra kZoneEraAntarctica_Casey[] ACE_TIME_PROGMEM = { 2 /*untilMonth*/, 21 /*untilDay*/, 68 /*untilTimeCode*/, - 'u' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*untilTimeModifier*/, }, // 8:00 - +08 2016 Oct 22 { @@ -7069,7 +7069,7 @@ static const extended::ZoneEra kZoneEraAntarctica_Casey[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 22 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 11:00 - +11 2018 Mar 11 4:00 { @@ -7081,7 +7081,7 @@ static const extended::ZoneEra kZoneEraAntarctica_Casey[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 11 /*untilDay*/, 16 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 8:00 - +08 { @@ -7093,7 +7093,7 @@ static const extended::ZoneEra kZoneEraAntarctica_Casey[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7128,7 +7128,7 @@ static const extended::ZoneEra kZoneEraAntarctica_Davis[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 18 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 5:00 - +05 2010 Mar 10 20:00u { @@ -7140,7 +7140,7 @@ static const extended::ZoneEra kZoneEraAntarctica_Davis[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 10 /*untilDay*/, 80 /*untilTimeCode*/, - 'u' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*untilTimeModifier*/, }, // 7:00 - +07 2011 Oct 28 2:00 { @@ -7152,7 +7152,7 @@ static const extended::ZoneEra kZoneEraAntarctica_Davis[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 28 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 5:00 - +05 2012 Feb 21 20:00u { @@ -7164,7 +7164,7 @@ static const extended::ZoneEra kZoneEraAntarctica_Davis[] ACE_TIME_PROGMEM = { 2 /*untilMonth*/, 21 /*untilDay*/, 80 /*untilTimeCode*/, - 'u' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*untilTimeModifier*/, }, // 7:00 - +07 { @@ -7176,7 +7176,7 @@ static const extended::ZoneEra kZoneEraAntarctica_Davis[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7211,7 +7211,7 @@ static const extended::ZoneEra kZoneEraAntarctica_DumontDUrville[] ACE_TIME_PROG 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7246,7 +7246,7 @@ static const extended::ZoneEra kZoneEraAntarctica_Macquarie[] ACE_TIME_PROGMEM = 4 /*untilMonth*/, 4 /*untilDay*/, 12 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 11:00 - +11 { @@ -7258,7 +7258,7 @@ static const extended::ZoneEra kZoneEraAntarctica_Macquarie[] ACE_TIME_PROGMEM = 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7293,7 +7293,7 @@ static const extended::ZoneEra kZoneEraAntarctica_Mawson[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 18 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 5:00 - +05 { @@ -7305,7 +7305,7 @@ static const extended::ZoneEra kZoneEraAntarctica_Mawson[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7340,7 +7340,7 @@ static const extended::ZoneEra kZoneEraAntarctica_Palmer[] ACE_TIME_PROGMEM = { 12 /*untilMonth*/, 4 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 - -03 { @@ -7352,7 +7352,7 @@ static const extended::ZoneEra kZoneEraAntarctica_Palmer[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7387,7 +7387,7 @@ static const extended::ZoneEra kZoneEraAntarctica_Rothera[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7422,7 +7422,7 @@ static const extended::ZoneEra kZoneEraAntarctica_Syowa[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7457,7 +7457,7 @@ static const extended::ZoneEra kZoneEraAntarctica_Troll[] ACE_TIME_PROGMEM = { 2 /*untilMonth*/, 12 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 0:00 Troll %s { @@ -7469,7 +7469,7 @@ static const extended::ZoneEra kZoneEraAntarctica_Troll[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7504,7 +7504,7 @@ static const extended::ZoneEra kZoneEraAntarctica_Vostok[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7539,7 +7539,7 @@ static const extended::ZoneEra kZoneEraAsia_Almaty[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 31 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 6:00 - +06 { @@ -7551,7 +7551,7 @@ static const extended::ZoneEra kZoneEraAsia_Almaty[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7586,7 +7586,7 @@ static const extended::ZoneEra kZoneEraAsia_Amman[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7621,7 +7621,7 @@ static const extended::ZoneEra kZoneEraAsia_Anadyr[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 28 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 11:00 Russia +11/+12 2011 Mar 27 2:00s { @@ -7633,7 +7633,7 @@ static const extended::ZoneEra kZoneEraAsia_Anadyr[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 12:00 - +12 { @@ -7645,7 +7645,7 @@ static const extended::ZoneEra kZoneEraAsia_Anadyr[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7680,7 +7680,7 @@ static const extended::ZoneEra kZoneEraAsia_Aqtau[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 31 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 5:00 - +05 { @@ -7692,7 +7692,7 @@ static const extended::ZoneEra kZoneEraAsia_Aqtau[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7727,7 +7727,7 @@ static const extended::ZoneEra kZoneEraAsia_Aqtobe[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 31 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 5:00 - +05 { @@ -7739,7 +7739,7 @@ static const extended::ZoneEra kZoneEraAsia_Aqtobe[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7774,7 +7774,7 @@ static const extended::ZoneEra kZoneEraAsia_Ashgabat[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7809,7 +7809,7 @@ static const extended::ZoneEra kZoneEraAsia_Atyrau[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 28 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 4:00 RussiaAsia +04/+05 2004 Oct 31 2:00s { @@ -7821,7 +7821,7 @@ static const extended::ZoneEra kZoneEraAsia_Atyrau[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 31 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 5:00 - +05 { @@ -7833,7 +7833,7 @@ static const extended::ZoneEra kZoneEraAsia_Atyrau[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7868,7 +7868,7 @@ static const extended::ZoneEra kZoneEraAsia_Baghdad[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7903,7 +7903,7 @@ static const extended::ZoneEra kZoneEraAsia_Baku[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7938,7 +7938,7 @@ static const extended::ZoneEra kZoneEraAsia_Bangkok[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7973,7 +7973,7 @@ static const extended::ZoneEra kZoneEraAsia_Barnaul[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 7:00 - +07 2014 Oct 26 2:00s { @@ -7985,7 +7985,7 @@ static const extended::ZoneEra kZoneEraAsia_Barnaul[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 26 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 6:00 - +06 2016 Mar 27 2:00s { @@ -7997,7 +7997,7 @@ static const extended::ZoneEra kZoneEraAsia_Barnaul[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 7:00 - +07 { @@ -8009,7 +8009,7 @@ static const extended::ZoneEra kZoneEraAsia_Barnaul[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8044,7 +8044,7 @@ static const extended::ZoneEra kZoneEraAsia_Beirut[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8079,7 +8079,7 @@ static const extended::ZoneEra kZoneEraAsia_Bishkek[] ACE_TIME_PROGMEM = { 8 /*untilMonth*/, 12 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 6:00 - +06 { @@ -8091,7 +8091,7 @@ static const extended::ZoneEra kZoneEraAsia_Bishkek[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8126,7 +8126,7 @@ static const extended::ZoneEra kZoneEraAsia_Brunei[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8161,7 +8161,7 @@ static const extended::ZoneEra kZoneEraAsia_Chita[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 10:00 - +10 2014 Oct 26 2:00s { @@ -8173,7 +8173,7 @@ static const extended::ZoneEra kZoneEraAsia_Chita[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 26 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 8:00 - +08 2016 Mar 27 2:00 { @@ -8185,7 +8185,7 @@ static const extended::ZoneEra kZoneEraAsia_Chita[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 9:00 - +09 { @@ -8197,7 +8197,7 @@ static const extended::ZoneEra kZoneEraAsia_Chita[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8232,7 +8232,7 @@ static const extended::ZoneEra kZoneEraAsia_Choibalsan[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 31 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 8:00 Mongol +08/+09 { @@ -8244,7 +8244,7 @@ static const extended::ZoneEra kZoneEraAsia_Choibalsan[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8279,7 +8279,7 @@ static const extended::ZoneEra kZoneEraAsia_Colombo[] ACE_TIME_PROGMEM = { 4 /*untilMonth*/, 15 /*untilDay*/, 2 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 5:30 - +0530 { @@ -8291,7 +8291,7 @@ static const extended::ZoneEra kZoneEraAsia_Colombo[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8326,7 +8326,7 @@ static const extended::ZoneEra kZoneEraAsia_Damascus[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8361,7 +8361,7 @@ static const extended::ZoneEra kZoneEraAsia_Dhaka[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 6:00 Dhaka +06/+07 { @@ -8373,7 +8373,7 @@ static const extended::ZoneEra kZoneEraAsia_Dhaka[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8408,7 +8408,7 @@ static const extended::ZoneEra kZoneEraAsia_Dili[] ACE_TIME_PROGMEM = { 9 /*untilMonth*/, 17 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 9:00 - +09 { @@ -8420,7 +8420,7 @@ static const extended::ZoneEra kZoneEraAsia_Dili[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8455,7 +8455,7 @@ static const extended::ZoneEra kZoneEraAsia_Dubai[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8490,7 +8490,7 @@ static const extended::ZoneEra kZoneEraAsia_Dushanbe[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8525,7 +8525,7 @@ static const extended::ZoneEra kZoneEraAsia_Famagusta[] ACE_TIME_PROGMEM = { 9 /*untilMonth*/, 8 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 3:00 - +03 2017 Oct 29 1:00u { @@ -8537,7 +8537,7 @@ static const extended::ZoneEra kZoneEraAsia_Famagusta[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 29 /*untilDay*/, 4 /*untilTimeCode*/, - 'u' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*untilTimeModifier*/, }, // 2:00 EUAsia EE%sT { @@ -8549,7 +8549,7 @@ static const extended::ZoneEra kZoneEraAsia_Famagusta[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8584,7 +8584,7 @@ static const extended::ZoneEra kZoneEraAsia_Gaza[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 2:00 Palestine EE%sT 2008 Aug 29 0:00 { @@ -8596,7 +8596,7 @@ static const extended::ZoneEra kZoneEraAsia_Gaza[] ACE_TIME_PROGMEM = { 8 /*untilMonth*/, 29 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 2:00 - EET 2008 Sep { @@ -8608,7 +8608,7 @@ static const extended::ZoneEra kZoneEraAsia_Gaza[] ACE_TIME_PROGMEM = { 9 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 2:00 Palestine EE%sT 2010 { @@ -8620,7 +8620,7 @@ static const extended::ZoneEra kZoneEraAsia_Gaza[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 2:00 - EET 2010 Mar 27 0:01 { @@ -8632,7 +8632,7 @@ static const extended::ZoneEra kZoneEraAsia_Gaza[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 2:00 Palestine EE%sT 2011 Aug 1 { @@ -8644,7 +8644,7 @@ static const extended::ZoneEra kZoneEraAsia_Gaza[] ACE_TIME_PROGMEM = { 8 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 2:00 - EET 2012 { @@ -8656,7 +8656,7 @@ static const extended::ZoneEra kZoneEraAsia_Gaza[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 2:00 Palestine EE%sT { @@ -8668,7 +8668,7 @@ static const extended::ZoneEra kZoneEraAsia_Gaza[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8703,7 +8703,7 @@ static const extended::ZoneEra kZoneEraAsia_Hebron[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 2:00 Palestine EE%sT { @@ -8715,7 +8715,7 @@ static const extended::ZoneEra kZoneEraAsia_Hebron[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8750,7 +8750,7 @@ static const extended::ZoneEra kZoneEraAsia_Ho_Chi_Minh[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8785,7 +8785,7 @@ static const extended::ZoneEra kZoneEraAsia_Hong_Kong[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8820,7 +8820,7 @@ static const extended::ZoneEra kZoneEraAsia_Hovd[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8855,7 +8855,7 @@ static const extended::ZoneEra kZoneEraAsia_Irkutsk[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 9:00 - +09 2014 Oct 26 2:00s { @@ -8867,7 +8867,7 @@ static const extended::ZoneEra kZoneEraAsia_Irkutsk[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 26 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 8:00 - +08 { @@ -8879,7 +8879,7 @@ static const extended::ZoneEra kZoneEraAsia_Irkutsk[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8914,7 +8914,7 @@ static const extended::ZoneEra kZoneEraAsia_Jakarta[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8949,7 +8949,7 @@ static const extended::ZoneEra kZoneEraAsia_Jayapura[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8984,7 +8984,7 @@ static const extended::ZoneEra kZoneEraAsia_Jerusalem[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9019,7 +9019,7 @@ static const extended::ZoneEra kZoneEraAsia_Kabul[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9054,7 +9054,7 @@ static const extended::ZoneEra kZoneEraAsia_Kamchatka[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 28 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 11:00 Russia +11/+12 2011 Mar 27 2:00s { @@ -9066,7 +9066,7 @@ static const extended::ZoneEra kZoneEraAsia_Kamchatka[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 12:00 - +12 { @@ -9078,7 +9078,7 @@ static const extended::ZoneEra kZoneEraAsia_Kamchatka[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9113,7 +9113,7 @@ static const extended::ZoneEra kZoneEraAsia_Karachi[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9148,7 +9148,7 @@ static const extended::ZoneEra kZoneEraAsia_Kathmandu[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9183,7 +9183,7 @@ static const extended::ZoneEra kZoneEraAsia_Khandyga[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 10:00 Russia +10/+11 2011 Mar 27 2:00s { @@ -9195,7 +9195,7 @@ static const extended::ZoneEra kZoneEraAsia_Khandyga[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 11:00 - +11 2011 Sep 13 0:00s { @@ -9207,7 +9207,7 @@ static const extended::ZoneEra kZoneEraAsia_Khandyga[] ACE_TIME_PROGMEM = { 9 /*untilMonth*/, 13 /*untilDay*/, 0 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 10:00 - +10 2014 Oct 26 2:00s { @@ -9219,7 +9219,7 @@ static const extended::ZoneEra kZoneEraAsia_Khandyga[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 26 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 9:00 - +09 { @@ -9231,7 +9231,7 @@ static const extended::ZoneEra kZoneEraAsia_Khandyga[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9266,7 +9266,7 @@ static const extended::ZoneEra kZoneEraAsia_Kolkata[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9301,7 +9301,7 @@ static const extended::ZoneEra kZoneEraAsia_Krasnoyarsk[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 8:00 - +08 2014 Oct 26 2:00s { @@ -9313,7 +9313,7 @@ static const extended::ZoneEra kZoneEraAsia_Krasnoyarsk[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 26 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 7:00 - +07 { @@ -9325,7 +9325,7 @@ static const extended::ZoneEra kZoneEraAsia_Krasnoyarsk[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9360,7 +9360,7 @@ static const extended::ZoneEra kZoneEraAsia_Kuala_Lumpur[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9395,7 +9395,7 @@ static const extended::ZoneEra kZoneEraAsia_Kuching[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9430,7 +9430,7 @@ static const extended::ZoneEra kZoneEraAsia_Macau[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9465,7 +9465,7 @@ static const extended::ZoneEra kZoneEraAsia_Magadan[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 12:00 - +12 2014 Oct 26 2:00s { @@ -9477,7 +9477,7 @@ static const extended::ZoneEra kZoneEraAsia_Magadan[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 26 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 10:00 - +10 2016 Apr 24 2:00s { @@ -9489,7 +9489,7 @@ static const extended::ZoneEra kZoneEraAsia_Magadan[] ACE_TIME_PROGMEM = { 4 /*untilMonth*/, 24 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 11:00 - +11 { @@ -9501,7 +9501,7 @@ static const extended::ZoneEra kZoneEraAsia_Magadan[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9536,7 +9536,7 @@ static const extended::ZoneEra kZoneEraAsia_Makassar[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9571,7 +9571,7 @@ static const extended::ZoneEra kZoneEraAsia_Manila[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9606,7 +9606,7 @@ static const extended::ZoneEra kZoneEraAsia_Nicosia[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9641,7 +9641,7 @@ static const extended::ZoneEra kZoneEraAsia_Novokuznetsk[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 28 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 6:00 Russia +06/+07 2011 Mar 27 2:00s { @@ -9653,7 +9653,7 @@ static const extended::ZoneEra kZoneEraAsia_Novokuznetsk[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 7:00 - +07 { @@ -9665,7 +9665,7 @@ static const extended::ZoneEra kZoneEraAsia_Novokuznetsk[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9700,7 +9700,7 @@ static const extended::ZoneEra kZoneEraAsia_Novosibirsk[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 7:00 - +07 2014 Oct 26 2:00s { @@ -9712,7 +9712,7 @@ static const extended::ZoneEra kZoneEraAsia_Novosibirsk[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 26 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 6:00 - +06 2016 Jul 24 2:00s { @@ -9724,7 +9724,7 @@ static const extended::ZoneEra kZoneEraAsia_Novosibirsk[] ACE_TIME_PROGMEM = { 7 /*untilMonth*/, 24 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 7:00 - +07 { @@ -9736,7 +9736,7 @@ static const extended::ZoneEra kZoneEraAsia_Novosibirsk[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9771,7 +9771,7 @@ static const extended::ZoneEra kZoneEraAsia_Omsk[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 7:00 - +07 2014 Oct 26 2:00s { @@ -9783,7 +9783,7 @@ static const extended::ZoneEra kZoneEraAsia_Omsk[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 26 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 6:00 - +06 { @@ -9795,7 +9795,7 @@ static const extended::ZoneEra kZoneEraAsia_Omsk[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9830,7 +9830,7 @@ static const extended::ZoneEra kZoneEraAsia_Oral[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 31 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 5:00 - +05 { @@ -9842,7 +9842,7 @@ static const extended::ZoneEra kZoneEraAsia_Oral[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9877,7 +9877,7 @@ static const extended::ZoneEra kZoneEraAsia_Pontianak[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9912,7 +9912,7 @@ static const extended::ZoneEra kZoneEraAsia_Pyongyang[] ACE_TIME_PROGMEM = { 8 /*untilMonth*/, 15 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 8:30 - KST 2018 May 4 23:30 { @@ -9924,7 +9924,7 @@ static const extended::ZoneEra kZoneEraAsia_Pyongyang[] ACE_TIME_PROGMEM = { 5 /*untilMonth*/, 4 /*untilDay*/, 94 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 9:00 - KST { @@ -9936,7 +9936,7 @@ static const extended::ZoneEra kZoneEraAsia_Pyongyang[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9971,7 +9971,7 @@ static const extended::ZoneEra kZoneEraAsia_Qatar[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -10006,7 +10006,7 @@ static const extended::ZoneEra kZoneEraAsia_Qostanay[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 31 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 6:00 - +06 { @@ -10018,7 +10018,7 @@ static const extended::ZoneEra kZoneEraAsia_Qostanay[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -10053,7 +10053,7 @@ static const extended::ZoneEra kZoneEraAsia_Qyzylorda[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 31 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 6:00 - +06 2018 Dec 21 0:00 { @@ -10065,7 +10065,7 @@ static const extended::ZoneEra kZoneEraAsia_Qyzylorda[] ACE_TIME_PROGMEM = { 12 /*untilMonth*/, 21 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 5:00 - +05 { @@ -10077,7 +10077,7 @@ static const extended::ZoneEra kZoneEraAsia_Qyzylorda[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -10112,7 +10112,7 @@ static const extended::ZoneEra kZoneEraAsia_Riyadh[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -10147,7 +10147,7 @@ static const extended::ZoneEra kZoneEraAsia_Sakhalin[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 11:00 - +11 2014 Oct 26 2:00s { @@ -10159,7 +10159,7 @@ static const extended::ZoneEra kZoneEraAsia_Sakhalin[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 26 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 10:00 - +10 2016 Mar 27 2:00s { @@ -10171,7 +10171,7 @@ static const extended::ZoneEra kZoneEraAsia_Sakhalin[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 11:00 - +11 { @@ -10183,7 +10183,7 @@ static const extended::ZoneEra kZoneEraAsia_Sakhalin[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -10218,7 +10218,7 @@ static const extended::ZoneEra kZoneEraAsia_Samarkand[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -10253,7 +10253,7 @@ static const extended::ZoneEra kZoneEraAsia_Seoul[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -10288,7 +10288,7 @@ static const extended::ZoneEra kZoneEraAsia_Shanghai[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -10323,7 +10323,7 @@ static const extended::ZoneEra kZoneEraAsia_Singapore[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -10358,7 +10358,7 @@ static const extended::ZoneEra kZoneEraAsia_Srednekolymsk[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 12:00 - +12 2014 Oct 26 2:00s { @@ -10370,7 +10370,7 @@ static const extended::ZoneEra kZoneEraAsia_Srednekolymsk[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 26 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 11:00 - +11 { @@ -10382,7 +10382,7 @@ static const extended::ZoneEra kZoneEraAsia_Srednekolymsk[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -10417,7 +10417,7 @@ static const extended::ZoneEra kZoneEraAsia_Taipei[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -10452,7 +10452,7 @@ static const extended::ZoneEra kZoneEraAsia_Tashkent[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -10487,7 +10487,7 @@ static const extended::ZoneEra kZoneEraAsia_Tbilisi[] ACE_TIME_PROGMEM = { 6 /*untilMonth*/, 27 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 3:00 RussiaAsia +03/+04 2005 Mar lastSun 2:00 { @@ -10499,7 +10499,7 @@ static const extended::ZoneEra kZoneEraAsia_Tbilisi[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 4:00 - +04 { @@ -10511,7 +10511,7 @@ static const extended::ZoneEra kZoneEraAsia_Tbilisi[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -10546,7 +10546,7 @@ static const extended::ZoneEra kZoneEraAsia_Tehran[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -10581,7 +10581,7 @@ static const extended::ZoneEra kZoneEraAsia_Thimphu[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -10616,7 +10616,7 @@ static const extended::ZoneEra kZoneEraAsia_Tokyo[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -10651,7 +10651,7 @@ static const extended::ZoneEra kZoneEraAsia_Tomsk[] ACE_TIME_PROGMEM = { 5 /*untilMonth*/, 1 /*untilDay*/, 12 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 6:00 Russia +06/+07 2011 Mar 27 2:00s { @@ -10663,7 +10663,7 @@ static const extended::ZoneEra kZoneEraAsia_Tomsk[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 7:00 - +07 2014 Oct 26 2:00s { @@ -10675,7 +10675,7 @@ static const extended::ZoneEra kZoneEraAsia_Tomsk[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 26 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 6:00 - +06 2016 May 29 2:00s { @@ -10687,7 +10687,7 @@ static const extended::ZoneEra kZoneEraAsia_Tomsk[] ACE_TIME_PROGMEM = { 5 /*untilMonth*/, 29 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 7:00 - +07 { @@ -10699,7 +10699,7 @@ static const extended::ZoneEra kZoneEraAsia_Tomsk[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -10734,7 +10734,7 @@ static const extended::ZoneEra kZoneEraAsia_Ulaanbaatar[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -10769,7 +10769,7 @@ static const extended::ZoneEra kZoneEraAsia_Urumqi[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -10804,7 +10804,7 @@ static const extended::ZoneEra kZoneEraAsia_Ust_Nera[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 12:00 - +12 2011 Sep 13 0:00s { @@ -10816,7 +10816,7 @@ static const extended::ZoneEra kZoneEraAsia_Ust_Nera[] ACE_TIME_PROGMEM = { 9 /*untilMonth*/, 13 /*untilDay*/, 0 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 11:00 - +11 2014 Oct 26 2:00s { @@ -10828,7 +10828,7 @@ static const extended::ZoneEra kZoneEraAsia_Ust_Nera[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 26 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 10:00 - +10 { @@ -10840,7 +10840,7 @@ static const extended::ZoneEra kZoneEraAsia_Ust_Nera[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -10875,7 +10875,7 @@ static const extended::ZoneEra kZoneEraAsia_Vladivostok[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 11:00 - +11 2014 Oct 26 2:00s { @@ -10887,7 +10887,7 @@ static const extended::ZoneEra kZoneEraAsia_Vladivostok[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 26 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 10:00 - +10 { @@ -10899,7 +10899,7 @@ static const extended::ZoneEra kZoneEraAsia_Vladivostok[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -10934,7 +10934,7 @@ static const extended::ZoneEra kZoneEraAsia_Yakutsk[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 10:00 - +10 2014 Oct 26 2:00s { @@ -10946,7 +10946,7 @@ static const extended::ZoneEra kZoneEraAsia_Yakutsk[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 26 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 9:00 - +09 { @@ -10958,7 +10958,7 @@ static const extended::ZoneEra kZoneEraAsia_Yakutsk[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -10993,7 +10993,7 @@ static const extended::ZoneEra kZoneEraAsia_Yangon[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -11028,7 +11028,7 @@ static const extended::ZoneEra kZoneEraAsia_Yekaterinburg[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 6:00 - +06 2014 Oct 26 2:00s { @@ -11040,7 +11040,7 @@ static const extended::ZoneEra kZoneEraAsia_Yekaterinburg[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 26 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 5:00 - +05 { @@ -11052,7 +11052,7 @@ static const extended::ZoneEra kZoneEraAsia_Yekaterinburg[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -11087,7 +11087,7 @@ static const extended::ZoneEra kZoneEraAsia_Yerevan[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 4:00 Armenia +04/+05 { @@ -11099,7 +11099,7 @@ static const extended::ZoneEra kZoneEraAsia_Yerevan[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -11134,7 +11134,7 @@ static const extended::ZoneEra kZoneEraAtlantic_Azores[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -11169,7 +11169,7 @@ static const extended::ZoneEra kZoneEraAtlantic_Bermuda[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -11204,7 +11204,7 @@ static const extended::ZoneEra kZoneEraAtlantic_Canary[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -11239,7 +11239,7 @@ static const extended::ZoneEra kZoneEraAtlantic_Cape_Verde[] ACE_TIME_PROGMEM = 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -11274,7 +11274,7 @@ static const extended::ZoneEra kZoneEraAtlantic_Faroe[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -11309,7 +11309,7 @@ static const extended::ZoneEra kZoneEraAtlantic_Madeira[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -11344,7 +11344,7 @@ static const extended::ZoneEra kZoneEraAtlantic_Reykjavik[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -11379,7 +11379,7 @@ static const extended::ZoneEra kZoneEraAtlantic_South_Georgia[] ACE_TIME_PROGMEM 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -11414,7 +11414,7 @@ static const extended::ZoneEra kZoneEraAtlantic_Stanley[] ACE_TIME_PROGMEM = { 9 /*untilMonth*/, 5 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 - -03 { @@ -11426,7 +11426,7 @@ static const extended::ZoneEra kZoneEraAtlantic_Stanley[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -11461,7 +11461,7 @@ static const extended::ZoneEra kZoneEraAustralia_Adelaide[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -11496,7 +11496,7 @@ static const extended::ZoneEra kZoneEraAustralia_Brisbane[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -11531,7 +11531,7 @@ static const extended::ZoneEra kZoneEraAustralia_Broken_Hill[] ACE_TIME_PROGMEM 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 9:30 AS AC%sT { @@ -11543,7 +11543,7 @@ static const extended::ZoneEra kZoneEraAustralia_Broken_Hill[] ACE_TIME_PROGMEM 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -11578,7 +11578,7 @@ static const extended::ZoneEra kZoneEraAustralia_Currie[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -11613,7 +11613,7 @@ static const extended::ZoneEra kZoneEraAustralia_Darwin[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -11648,7 +11648,7 @@ static const extended::ZoneEra kZoneEraAustralia_Eucla[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -11683,7 +11683,7 @@ static const extended::ZoneEra kZoneEraAustralia_Hobart[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -11718,7 +11718,7 @@ static const extended::ZoneEra kZoneEraAustralia_Lindeman[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -11753,7 +11753,7 @@ static const extended::ZoneEra kZoneEraAustralia_Lord_Howe[] ACE_TIME_PROGMEM = 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -11788,7 +11788,7 @@ static const extended::ZoneEra kZoneEraAustralia_Melbourne[] ACE_TIME_PROGMEM = 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -11823,7 +11823,7 @@ static const extended::ZoneEra kZoneEraAustralia_Perth[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -11858,7 +11858,7 @@ static const extended::ZoneEra kZoneEraAustralia_Sydney[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -11893,7 +11893,7 @@ static const extended::ZoneEra kZoneEraCET[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -11928,7 +11928,7 @@ static const extended::ZoneEra kZoneEraCST6CDT[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -11963,7 +11963,7 @@ static const extended::ZoneEra kZoneEraEET[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -11998,7 +11998,7 @@ static const extended::ZoneEra kZoneEraEST[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -12033,7 +12033,7 @@ static const extended::ZoneEra kZoneEraEST5EDT[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -12068,7 +12068,7 @@ static const extended::ZoneEra kZoneEraEtc_GMT[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -12103,7 +12103,7 @@ static const extended::ZoneEra kZoneEraEtc_GMT_PLUS_1[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -12138,7 +12138,7 @@ static const extended::ZoneEra kZoneEraEtc_GMT_PLUS_10[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -12173,7 +12173,7 @@ static const extended::ZoneEra kZoneEraEtc_GMT_PLUS_11[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -12208,7 +12208,7 @@ static const extended::ZoneEra kZoneEraEtc_GMT_PLUS_12[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -12243,7 +12243,7 @@ static const extended::ZoneEra kZoneEraEtc_GMT_PLUS_2[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -12278,7 +12278,7 @@ static const extended::ZoneEra kZoneEraEtc_GMT_PLUS_3[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -12313,7 +12313,7 @@ static const extended::ZoneEra kZoneEraEtc_GMT_PLUS_4[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -12348,7 +12348,7 @@ static const extended::ZoneEra kZoneEraEtc_GMT_PLUS_5[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -12383,7 +12383,7 @@ static const extended::ZoneEra kZoneEraEtc_GMT_PLUS_6[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -12418,7 +12418,7 @@ static const extended::ZoneEra kZoneEraEtc_GMT_PLUS_7[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -12453,7 +12453,7 @@ static const extended::ZoneEra kZoneEraEtc_GMT_PLUS_8[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -12488,7 +12488,7 @@ static const extended::ZoneEra kZoneEraEtc_GMT_PLUS_9[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -12523,7 +12523,7 @@ static const extended::ZoneEra kZoneEraEtc_GMT_1[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -12558,7 +12558,7 @@ static const extended::ZoneEra kZoneEraEtc_GMT_10[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -12593,7 +12593,7 @@ static const extended::ZoneEra kZoneEraEtc_GMT_11[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -12628,7 +12628,7 @@ static const extended::ZoneEra kZoneEraEtc_GMT_12[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -12663,7 +12663,7 @@ static const extended::ZoneEra kZoneEraEtc_GMT_13[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -12698,7 +12698,7 @@ static const extended::ZoneEra kZoneEraEtc_GMT_14[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -12733,7 +12733,7 @@ static const extended::ZoneEra kZoneEraEtc_GMT_2[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -12768,7 +12768,7 @@ static const extended::ZoneEra kZoneEraEtc_GMT_3[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -12803,7 +12803,7 @@ static const extended::ZoneEra kZoneEraEtc_GMT_4[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -12838,7 +12838,7 @@ static const extended::ZoneEra kZoneEraEtc_GMT_5[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -12873,7 +12873,7 @@ static const extended::ZoneEra kZoneEraEtc_GMT_6[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -12908,7 +12908,7 @@ static const extended::ZoneEra kZoneEraEtc_GMT_7[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -12943,7 +12943,7 @@ static const extended::ZoneEra kZoneEraEtc_GMT_8[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -12978,7 +12978,7 @@ static const extended::ZoneEra kZoneEraEtc_GMT_9[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -13013,7 +13013,7 @@ static const extended::ZoneEra kZoneEraEtc_UTC[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -13048,7 +13048,7 @@ static const extended::ZoneEra kZoneEraEurope_Amsterdam[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -13083,7 +13083,7 @@ static const extended::ZoneEra kZoneEraEurope_Andorra[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -13118,7 +13118,7 @@ static const extended::ZoneEra kZoneEraEurope_Astrakhan[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 4:00 - +04 2014 Oct 26 2:00s { @@ -13130,7 +13130,7 @@ static const extended::ZoneEra kZoneEraEurope_Astrakhan[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 26 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 3:00 - +03 2016 Mar 27 2:00s { @@ -13142,7 +13142,7 @@ static const extended::ZoneEra kZoneEraEurope_Astrakhan[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 4:00 - +04 { @@ -13154,7 +13154,7 @@ static const extended::ZoneEra kZoneEraEurope_Astrakhan[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -13189,7 +13189,7 @@ static const extended::ZoneEra kZoneEraEurope_Athens[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -13224,7 +13224,7 @@ static const extended::ZoneEra kZoneEraEurope_Belgrade[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -13259,7 +13259,7 @@ static const extended::ZoneEra kZoneEraEurope_Berlin[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -13294,7 +13294,7 @@ static const extended::ZoneEra kZoneEraEurope_Brussels[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -13329,7 +13329,7 @@ static const extended::ZoneEra kZoneEraEurope_Bucharest[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -13364,7 +13364,7 @@ static const extended::ZoneEra kZoneEraEurope_Budapest[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -13399,7 +13399,7 @@ static const extended::ZoneEra kZoneEraEurope_Chisinau[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -13434,7 +13434,7 @@ static const extended::ZoneEra kZoneEraEurope_Copenhagen[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -13469,7 +13469,7 @@ static const extended::ZoneEra kZoneEraEurope_Dublin[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -13504,7 +13504,7 @@ static const extended::ZoneEra kZoneEraEurope_Gibraltar[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -13539,7 +13539,7 @@ static const extended::ZoneEra kZoneEraEurope_Helsinki[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -13574,7 +13574,7 @@ static const extended::ZoneEra kZoneEraEurope_Istanbul[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 2:00 EU EE%sT 2011 Mar 27 1:00u { @@ -13586,7 +13586,7 @@ static const extended::ZoneEra kZoneEraEurope_Istanbul[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 4 /*untilTimeCode*/, - 'u' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*untilTimeModifier*/, }, // 2:00 - EET 2011 Mar 28 1:00u { @@ -13598,7 +13598,7 @@ static const extended::ZoneEra kZoneEraEurope_Istanbul[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 28 /*untilDay*/, 4 /*untilTimeCode*/, - 'u' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*untilTimeModifier*/, }, // 2:00 EU EE%sT 2014 Mar 30 1:00u { @@ -13610,7 +13610,7 @@ static const extended::ZoneEra kZoneEraEurope_Istanbul[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 30 /*untilDay*/, 4 /*untilTimeCode*/, - 'u' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*untilTimeModifier*/, }, // 2:00 - EET 2014 Mar 31 1:00u { @@ -13622,7 +13622,7 @@ static const extended::ZoneEra kZoneEraEurope_Istanbul[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 31 /*untilDay*/, 4 /*untilTimeCode*/, - 'u' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*untilTimeModifier*/, }, // 2:00 EU EE%sT 2015 Oct 25 1:00u { @@ -13634,7 +13634,7 @@ static const extended::ZoneEra kZoneEraEurope_Istanbul[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 25 /*untilDay*/, 4 /*untilTimeCode*/, - 'u' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*untilTimeModifier*/, }, // 2:00 1:00 EEST 2015 Nov 8 1:00u { @@ -13646,7 +13646,7 @@ static const extended::ZoneEra kZoneEraEurope_Istanbul[] ACE_TIME_PROGMEM = { 11 /*untilMonth*/, 8 /*untilDay*/, 4 /*untilTimeCode*/, - 'u' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*untilTimeModifier*/, }, // 2:00 EU EE%sT 2016 Sep 7 { @@ -13658,7 +13658,7 @@ static const extended::ZoneEra kZoneEraEurope_Istanbul[] ACE_TIME_PROGMEM = { 9 /*untilMonth*/, 7 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 3:00 - +03 { @@ -13670,7 +13670,7 @@ static const extended::ZoneEra kZoneEraEurope_Istanbul[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -13705,7 +13705,7 @@ static const extended::ZoneEra kZoneEraEurope_Kaliningrad[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 3:00 - +03 2014 Oct 26 2:00s { @@ -13717,7 +13717,7 @@ static const extended::ZoneEra kZoneEraEurope_Kaliningrad[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 26 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 2:00 - EET { @@ -13729,7 +13729,7 @@ static const extended::ZoneEra kZoneEraEurope_Kaliningrad[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -13764,7 +13764,7 @@ static const extended::ZoneEra kZoneEraEurope_Kiev[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -13799,7 +13799,7 @@ static const extended::ZoneEra kZoneEraEurope_Kirov[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 4:00 - +04 2014 Oct 26 2:00s { @@ -13811,7 +13811,7 @@ static const extended::ZoneEra kZoneEraEurope_Kirov[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 26 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 3:00 - +03 { @@ -13823,7 +13823,7 @@ static const extended::ZoneEra kZoneEraEurope_Kirov[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -13858,7 +13858,7 @@ static const extended::ZoneEra kZoneEraEurope_Lisbon[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -13893,7 +13893,7 @@ static const extended::ZoneEra kZoneEraEurope_London[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -13928,7 +13928,7 @@ static const extended::ZoneEra kZoneEraEurope_Luxembourg[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -13963,7 +13963,7 @@ static const extended::ZoneEra kZoneEraEurope_Madrid[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -13998,7 +13998,7 @@ static const extended::ZoneEra kZoneEraEurope_Malta[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -14033,7 +14033,7 @@ static const extended::ZoneEra kZoneEraEurope_Minsk[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 3:00 - +03 { @@ -14045,7 +14045,7 @@ static const extended::ZoneEra kZoneEraEurope_Minsk[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -14080,7 +14080,7 @@ static const extended::ZoneEra kZoneEraEurope_Monaco[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -14115,7 +14115,7 @@ static const extended::ZoneEra kZoneEraEurope_Moscow[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 4:00 - MSK 2014 Oct 26 2:00s { @@ -14127,7 +14127,7 @@ static const extended::ZoneEra kZoneEraEurope_Moscow[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 26 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 3:00 - MSK { @@ -14139,7 +14139,7 @@ static const extended::ZoneEra kZoneEraEurope_Moscow[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -14174,7 +14174,7 @@ static const extended::ZoneEra kZoneEraEurope_Oslo[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -14209,7 +14209,7 @@ static const extended::ZoneEra kZoneEraEurope_Paris[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -14244,7 +14244,7 @@ static const extended::ZoneEra kZoneEraEurope_Prague[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -14279,7 +14279,7 @@ static const extended::ZoneEra kZoneEraEurope_Riga[] ACE_TIME_PROGMEM = { 2 /*untilMonth*/, 29 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 2:00 - EET 2001 Jan 2 { @@ -14291,7 +14291,7 @@ static const extended::ZoneEra kZoneEraEurope_Riga[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 2 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 2:00 EU EE%sT { @@ -14303,7 +14303,7 @@ static const extended::ZoneEra kZoneEraEurope_Riga[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -14338,7 +14338,7 @@ static const extended::ZoneEra kZoneEraEurope_Rome[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -14373,7 +14373,7 @@ static const extended::ZoneEra kZoneEraEurope_Samara[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 28 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 3:00 Russia +03/+04 2011 Mar 27 2:00s { @@ -14385,7 +14385,7 @@ static const extended::ZoneEra kZoneEraEurope_Samara[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 4:00 - +04 { @@ -14397,7 +14397,7 @@ static const extended::ZoneEra kZoneEraEurope_Samara[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -14432,7 +14432,7 @@ static const extended::ZoneEra kZoneEraEurope_Saratov[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 4:00 - +04 2014 Oct 26 2:00s { @@ -14444,7 +14444,7 @@ static const extended::ZoneEra kZoneEraEurope_Saratov[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 26 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 3:00 - +03 2016 Dec 4 2:00s { @@ -14456,7 +14456,7 @@ static const extended::ZoneEra kZoneEraEurope_Saratov[] ACE_TIME_PROGMEM = { 12 /*untilMonth*/, 4 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 4:00 - +04 { @@ -14468,7 +14468,7 @@ static const extended::ZoneEra kZoneEraEurope_Saratov[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -14503,7 +14503,7 @@ static const extended::ZoneEra kZoneEraEurope_Simferopol[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 30 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 4:00 - MSK 2014 Oct 26 2:00s { @@ -14515,7 +14515,7 @@ static const extended::ZoneEra kZoneEraEurope_Simferopol[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 26 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 3:00 - MSK { @@ -14527,7 +14527,7 @@ static const extended::ZoneEra kZoneEraEurope_Simferopol[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -14562,7 +14562,7 @@ static const extended::ZoneEra kZoneEraEurope_Sofia[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -14597,7 +14597,7 @@ static const extended::ZoneEra kZoneEraEurope_Stockholm[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -14632,7 +14632,7 @@ static const extended::ZoneEra kZoneEraEurope_Tallinn[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 31 /*untilDay*/, 16 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 2:00 - EET 2002 Feb 21 { @@ -14644,7 +14644,7 @@ static const extended::ZoneEra kZoneEraEurope_Tallinn[] ACE_TIME_PROGMEM = { 2 /*untilMonth*/, 21 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 2:00 EU EE%sT { @@ -14656,7 +14656,7 @@ static const extended::ZoneEra kZoneEraEurope_Tallinn[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -14691,7 +14691,7 @@ static const extended::ZoneEra kZoneEraEurope_Tirane[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -14726,7 +14726,7 @@ static const extended::ZoneEra kZoneEraEurope_Ulyanovsk[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 4:00 - +04 2014 Oct 26 2:00s { @@ -14738,7 +14738,7 @@ static const extended::ZoneEra kZoneEraEurope_Ulyanovsk[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 26 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 3:00 - +03 2016 Mar 27 2:00s { @@ -14750,7 +14750,7 @@ static const extended::ZoneEra kZoneEraEurope_Ulyanovsk[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 4:00 - +04 { @@ -14762,7 +14762,7 @@ static const extended::ZoneEra kZoneEraEurope_Ulyanovsk[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -14797,7 +14797,7 @@ static const extended::ZoneEra kZoneEraEurope_Uzhgorod[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -14832,7 +14832,7 @@ static const extended::ZoneEra kZoneEraEurope_Vienna[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -14867,7 +14867,7 @@ static const extended::ZoneEra kZoneEraEurope_Vilnius[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 31 /*untilDay*/, 4 /*untilTimeCode*/, - 'u' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*untilTimeModifier*/, }, // 2:00 - EET 2003 Jan 1 { @@ -14879,7 +14879,7 @@ static const extended::ZoneEra kZoneEraEurope_Vilnius[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 2:00 EU EE%sT { @@ -14891,7 +14891,7 @@ static const extended::ZoneEra kZoneEraEurope_Vilnius[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -14926,7 +14926,7 @@ static const extended::ZoneEra kZoneEraEurope_Volgograd[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 4:00 - +04 2014 Oct 26 2:00s { @@ -14938,7 +14938,7 @@ static const extended::ZoneEra kZoneEraEurope_Volgograd[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 26 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 3:00 - +03 2018 Oct 28 2:00s { @@ -14950,7 +14950,7 @@ static const extended::ZoneEra kZoneEraEurope_Volgograd[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 28 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 4:00 - +04 { @@ -14962,7 +14962,7 @@ static const extended::ZoneEra kZoneEraEurope_Volgograd[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -14997,7 +14997,7 @@ static const extended::ZoneEra kZoneEraEurope_Warsaw[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -15032,7 +15032,7 @@ static const extended::ZoneEra kZoneEraEurope_Zaporozhye[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -15067,7 +15067,7 @@ static const extended::ZoneEra kZoneEraEurope_Zurich[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -15102,7 +15102,7 @@ static const extended::ZoneEra kZoneEraHST[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -15137,7 +15137,7 @@ static const extended::ZoneEra kZoneEraIndian_Chagos[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -15172,7 +15172,7 @@ static const extended::ZoneEra kZoneEraIndian_Christmas[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -15207,7 +15207,7 @@ static const extended::ZoneEra kZoneEraIndian_Cocos[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -15242,7 +15242,7 @@ static const extended::ZoneEra kZoneEraIndian_Kerguelen[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -15277,7 +15277,7 @@ static const extended::ZoneEra kZoneEraIndian_Mahe[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -15312,7 +15312,7 @@ static const extended::ZoneEra kZoneEraIndian_Maldives[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -15347,7 +15347,7 @@ static const extended::ZoneEra kZoneEraIndian_Mauritius[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -15382,7 +15382,7 @@ static const extended::ZoneEra kZoneEraIndian_Reunion[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -15417,7 +15417,7 @@ static const extended::ZoneEra kZoneEraMET[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -15452,7 +15452,7 @@ static const extended::ZoneEra kZoneEraMST[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -15487,7 +15487,7 @@ static const extended::ZoneEra kZoneEraMST7MDT[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -15522,7 +15522,7 @@ static const extended::ZoneEra kZoneEraPST8PDT[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -15557,7 +15557,7 @@ static const extended::ZoneEra kZoneEraPacific_Apia[] ACE_TIME_PROGMEM = { 12 /*untilMonth*/, 29 /*untilDay*/, 96 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 13:00 WS +13/+14 { @@ -15569,7 +15569,7 @@ static const extended::ZoneEra kZoneEraPacific_Apia[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -15604,7 +15604,7 @@ static const extended::ZoneEra kZoneEraPacific_Auckland[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -15639,7 +15639,7 @@ static const extended::ZoneEra kZoneEraPacific_Bougainville[] ACE_TIME_PROGMEM = 12 /*untilMonth*/, 28 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 11:00 - +11 { @@ -15651,7 +15651,7 @@ static const extended::ZoneEra kZoneEraPacific_Bougainville[] ACE_TIME_PROGMEM = 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -15686,7 +15686,7 @@ static const extended::ZoneEra kZoneEraPacific_Chatham[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -15721,7 +15721,7 @@ static const extended::ZoneEra kZoneEraPacific_Chuuk[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -15756,7 +15756,7 @@ static const extended::ZoneEra kZoneEraPacific_Easter[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -15791,7 +15791,7 @@ static const extended::ZoneEra kZoneEraPacific_Efate[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -15826,7 +15826,7 @@ static const extended::ZoneEra kZoneEraPacific_Enderbury[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -15861,7 +15861,7 @@ static const extended::ZoneEra kZoneEraPacific_Fakaofo[] ACE_TIME_PROGMEM = { 12 /*untilMonth*/, 30 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 13:00 - +13 { @@ -15873,7 +15873,7 @@ static const extended::ZoneEra kZoneEraPacific_Fakaofo[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -15908,7 +15908,7 @@ static const extended::ZoneEra kZoneEraPacific_Fiji[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -15943,7 +15943,7 @@ static const extended::ZoneEra kZoneEraPacific_Funafuti[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -15978,7 +15978,7 @@ static const extended::ZoneEra kZoneEraPacific_Galapagos[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -16013,7 +16013,7 @@ static const extended::ZoneEra kZoneEraPacific_Gambier[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -16048,7 +16048,7 @@ static const extended::ZoneEra kZoneEraPacific_Guadalcanal[] ACE_TIME_PROGMEM = 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -16083,7 +16083,7 @@ static const extended::ZoneEra kZoneEraPacific_Guam[] ACE_TIME_PROGMEM = { 12 /*untilMonth*/, 23 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 10:00 - ChST { @@ -16095,7 +16095,7 @@ static const extended::ZoneEra kZoneEraPacific_Guam[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -16130,7 +16130,7 @@ static const extended::ZoneEra kZoneEraPacific_Honolulu[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -16165,7 +16165,7 @@ static const extended::ZoneEra kZoneEraPacific_Kiritimati[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -16200,7 +16200,7 @@ static const extended::ZoneEra kZoneEraPacific_Kosrae[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 11:00 - +11 { @@ -16212,7 +16212,7 @@ static const extended::ZoneEra kZoneEraPacific_Kosrae[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -16247,7 +16247,7 @@ static const extended::ZoneEra kZoneEraPacific_Kwajalein[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -16282,7 +16282,7 @@ static const extended::ZoneEra kZoneEraPacific_Majuro[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -16317,7 +16317,7 @@ static const extended::ZoneEra kZoneEraPacific_Marquesas[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -16352,7 +16352,7 @@ static const extended::ZoneEra kZoneEraPacific_Nauru[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -16387,7 +16387,7 @@ static const extended::ZoneEra kZoneEraPacific_Niue[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -16422,7 +16422,7 @@ static const extended::ZoneEra kZoneEraPacific_Norfolk[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 4 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 11:00 - +11 { @@ -16434,7 +16434,7 @@ static const extended::ZoneEra kZoneEraPacific_Norfolk[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -16469,7 +16469,7 @@ static const extended::ZoneEra kZoneEraPacific_Noumea[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -16504,7 +16504,7 @@ static const extended::ZoneEra kZoneEraPacific_Pago_Pago[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -16539,7 +16539,7 @@ static const extended::ZoneEra kZoneEraPacific_Palau[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -16574,7 +16574,7 @@ static const extended::ZoneEra kZoneEraPacific_Pitcairn[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -16609,7 +16609,7 @@ static const extended::ZoneEra kZoneEraPacific_Pohnpei[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -16644,7 +16644,7 @@ static const extended::ZoneEra kZoneEraPacific_Port_Moresby[] ACE_TIME_PROGMEM = 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -16679,7 +16679,7 @@ static const extended::ZoneEra kZoneEraPacific_Rarotonga[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -16714,7 +16714,7 @@ static const extended::ZoneEra kZoneEraPacific_Tahiti[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -16749,7 +16749,7 @@ static const extended::ZoneEra kZoneEraPacific_Tarawa[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -16784,7 +16784,7 @@ static const extended::ZoneEra kZoneEraPacific_Tongatapu[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 13:00 Tonga +13/+14 { @@ -16796,7 +16796,7 @@ static const extended::ZoneEra kZoneEraPacific_Tongatapu[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -16831,7 +16831,7 @@ static const extended::ZoneEra kZoneEraPacific_Wake[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -16866,7 +16866,7 @@ static const extended::ZoneEra kZoneEraPacific_Wallis[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -16901,7 +16901,7 @@ static const extended::ZoneEra kZoneEraWET[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; diff --git a/src/ace_time/zonedbx/zone_policies.cpp b/src/ace_time/zonedbx/zone_policies.cpp index f8d7ba9cf..57015a012 100644 --- a/src/ace_time/zonedbx/zone_policies.cpp +++ b/src/ace_time/zonedbx/zone_policies.cpp @@ -34,7 +34,7 @@ static const extended::ZoneRule kZoneRulesAN[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -46,7 +46,7 @@ static const extended::ZoneRule kZoneRulesAN[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -58,7 +58,7 @@ static const extended::ZoneRule kZoneRulesAN[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -70,7 +70,7 @@ static const extended::ZoneRule kZoneRulesAN[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -82,7 +82,7 @@ static const extended::ZoneRule kZoneRulesAN[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -94,7 +94,7 @@ static const extended::ZoneRule kZoneRulesAN[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -106,7 +106,7 @@ static const extended::ZoneRule kZoneRulesAN[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -118,7 +118,7 @@ static const extended::ZoneRule kZoneRulesAN[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -130,7 +130,7 @@ static const extended::ZoneRule kZoneRulesAN[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -162,7 +162,7 @@ static const extended::ZoneRule kZoneRulesAQ[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -194,7 +194,7 @@ static const extended::ZoneRule kZoneRulesAS[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -206,7 +206,7 @@ static const extended::ZoneRule kZoneRulesAS[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -218,7 +218,7 @@ static const extended::ZoneRule kZoneRulesAS[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -230,7 +230,7 @@ static const extended::ZoneRule kZoneRulesAS[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 2 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -242,7 +242,7 @@ static const extended::ZoneRule kZoneRulesAS[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -254,7 +254,7 @@ static const extended::ZoneRule kZoneRulesAS[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -266,7 +266,7 @@ static const extended::ZoneRule kZoneRulesAS[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -298,7 +298,7 @@ static const extended::ZoneRule kZoneRulesAT[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -310,7 +310,7 @@ static const extended::ZoneRule kZoneRulesAT[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -322,7 +322,7 @@ static const extended::ZoneRule kZoneRulesAT[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -334,7 +334,7 @@ static const extended::ZoneRule kZoneRulesAT[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -346,7 +346,7 @@ static const extended::ZoneRule kZoneRulesAT[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -358,7 +358,7 @@ static const extended::ZoneRule kZoneRulesAT[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -370,7 +370,7 @@ static const extended::ZoneRule kZoneRulesAT[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -382,7 +382,7 @@ static const extended::ZoneRule kZoneRulesAT[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -414,7 +414,7 @@ static const extended::ZoneRule kZoneRulesAV[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -426,7 +426,7 @@ static const extended::ZoneRule kZoneRulesAV[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -438,7 +438,7 @@ static const extended::ZoneRule kZoneRulesAV[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -450,7 +450,7 @@ static const extended::ZoneRule kZoneRulesAV[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -462,7 +462,7 @@ static const extended::ZoneRule kZoneRulesAV[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -474,7 +474,7 @@ static const extended::ZoneRule kZoneRulesAV[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -486,7 +486,7 @@ static const extended::ZoneRule kZoneRulesAV[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -498,7 +498,7 @@ static const extended::ZoneRule kZoneRulesAV[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -510,7 +510,7 @@ static const extended::ZoneRule kZoneRulesAV[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -542,7 +542,7 @@ static const extended::ZoneRule kZoneRulesAW[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -554,7 +554,7 @@ static const extended::ZoneRule kZoneRulesAW[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 3 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -566,7 +566,7 @@ static const extended::ZoneRule kZoneRulesAW[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -578,7 +578,7 @@ static const extended::ZoneRule kZoneRulesAW[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -610,7 +610,7 @@ static const extended::ZoneRule kZoneRulesArg[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -622,7 +622,7 @@ static const extended::ZoneRule kZoneRulesArg[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -634,7 +634,7 @@ static const extended::ZoneRule kZoneRulesArg[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 3 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -646,7 +646,7 @@ static const extended::ZoneRule kZoneRulesArg[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 30 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -658,7 +658,7 @@ static const extended::ZoneRule kZoneRulesArg[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -670,7 +670,7 @@ static const extended::ZoneRule kZoneRulesArg[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -702,7 +702,7 @@ static const extended::ZoneRule kZoneRulesArmenia[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -714,7 +714,7 @@ static const extended::ZoneRule kZoneRulesArmenia[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -726,7 +726,7 @@ static const extended::ZoneRule kZoneRulesArmenia[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -758,7 +758,7 @@ static const extended::ZoneRule kZoneRulesAus[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -790,7 +790,7 @@ static const extended::ZoneRule kZoneRulesAzer[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 16 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -802,7 +802,7 @@ static const extended::ZoneRule kZoneRulesAzer[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 20 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -834,7 +834,7 @@ static const extended::ZoneRule kZoneRulesBarb[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 25 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -866,7 +866,7 @@ static const extended::ZoneRule kZoneRulesBelize[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 12 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 0 /*letter; "CST"*/, }, @@ -902,7 +902,7 @@ static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 11 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -914,7 +914,7 @@ static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -926,7 +926,7 @@ static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 3 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -938,7 +938,7 @@ static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 27 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -950,7 +950,7 @@ static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -962,7 +962,7 @@ static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -974,7 +974,7 @@ static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 3 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -986,7 +986,7 @@ static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 19 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -998,7 +998,7 @@ static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 2 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -1010,7 +1010,7 @@ static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 16 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -1022,7 +1022,7 @@ static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 5 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -1034,7 +1034,7 @@ static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 25 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1046,7 +1046,7 @@ static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -1058,7 +1058,7 @@ static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -1070,7 +1070,7 @@ static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1082,7 +1082,7 @@ static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1094,7 +1094,7 @@ static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1106,7 +1106,7 @@ static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1118,7 +1118,7 @@ static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1130,7 +1130,7 @@ static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -1142,7 +1142,7 @@ static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1154,7 +1154,7 @@ static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1166,7 +1166,7 @@ static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1178,7 +1178,7 @@ static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1190,7 +1190,7 @@ static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1202,7 +1202,7 @@ static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1214,7 +1214,7 @@ static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1226,7 +1226,7 @@ static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1258,7 +1258,7 @@ static const extended::ZoneRule kZoneRulesC_Eur[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1270,7 +1270,7 @@ static const extended::ZoneRule kZoneRulesC_Eur[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -1282,7 +1282,7 @@ static const extended::ZoneRule kZoneRulesC_Eur[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1314,7 +1314,7 @@ static const extended::ZoneRule kZoneRulesCO[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 4 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1346,7 +1346,7 @@ static const extended::ZoneRule kZoneRulesCR[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -1378,7 +1378,7 @@ static const extended::ZoneRule kZoneRulesCanada[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -1390,7 +1390,7 @@ static const extended::ZoneRule kZoneRulesCanada[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -1402,7 +1402,7 @@ static const extended::ZoneRule kZoneRulesCanada[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -1414,7 +1414,7 @@ static const extended::ZoneRule kZoneRulesCanada[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -1426,7 +1426,7 @@ static const extended::ZoneRule kZoneRulesCanada[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -1458,7 +1458,7 @@ static const extended::ZoneRule kZoneRulesChatham[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 11 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -1470,7 +1470,7 @@ static const extended::ZoneRule kZoneRulesChatham[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 11 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -1482,7 +1482,7 @@ static const extended::ZoneRule kZoneRulesChatham[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 11 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1494,7 +1494,7 @@ static const extended::ZoneRule kZoneRulesChatham[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 11 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -1506,7 +1506,7 @@ static const extended::ZoneRule kZoneRulesChatham[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 11 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1538,7 +1538,7 @@ static const extended::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 27 /*onDayOfMonth*/, 16 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -1550,7 +1550,7 @@ static const extended::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 4 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1562,7 +1562,7 @@ static const extended::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 9 /*onDayOfMonth*/, 16 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -1574,7 +1574,7 @@ static const extended::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 9 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1586,7 +1586,7 @@ static const extended::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 30 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1598,7 +1598,7 @@ static const extended::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 9 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1610,7 +1610,7 @@ static const extended::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1622,7 +1622,7 @@ static const extended::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 2 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1634,7 +1634,7 @@ static const extended::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 16 /*onDayOfMonth*/, 16 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -1646,7 +1646,7 @@ static const extended::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 23 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1658,7 +1658,7 @@ static const extended::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 2 /*onDayOfMonth*/, 16 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -1670,7 +1670,7 @@ static const extended::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 9 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1682,7 +1682,7 @@ static const extended::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 9 /*onDayOfMonth*/, 16 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -1694,7 +1694,7 @@ static const extended::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 2 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1706,7 +1706,7 @@ static const extended::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 2 /*onDayOfMonth*/, 16 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -1738,7 +1738,7 @@ static const extended::ZoneRule kZoneRulesCook[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1770,7 +1770,7 @@ static const extended::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 12 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -1782,7 +1782,7 @@ static const extended::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -1794,7 +1794,7 @@ static const extended::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -1806,7 +1806,7 @@ static const extended::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -1818,7 +1818,7 @@ static const extended::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -1830,7 +1830,7 @@ static const extended::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -1842,7 +1842,7 @@ static const extended::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -1854,7 +1854,7 @@ static const extended::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -1866,7 +1866,7 @@ static const extended::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -1878,7 +1878,7 @@ static const extended::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -1890,7 +1890,7 @@ static const extended::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 13 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -1902,7 +1902,7 @@ static const extended::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -1914,7 +1914,7 @@ static const extended::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -1926,7 +1926,7 @@ static const extended::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -1958,7 +1958,7 @@ static const extended::ZoneRule kZoneRulesDhaka[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1970,7 +1970,7 @@ static const extended::ZoneRule kZoneRulesDhaka[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 19 /*onDayOfMonth*/, 92 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -1982,7 +1982,7 @@ static const extended::ZoneRule kZoneRulesDhaka[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 31 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2014,7 +2014,7 @@ static const extended::ZoneRule kZoneRulesE_EurAsia[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -2026,7 +2026,7 @@ static const extended::ZoneRule kZoneRulesE_EurAsia[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2038,7 +2038,7 @@ static const extended::ZoneRule kZoneRulesE_EurAsia[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2070,7 +2070,7 @@ static const extended::ZoneRule kZoneRulesEU[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2082,7 +2082,7 @@ static const extended::ZoneRule kZoneRulesEU[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -2094,7 +2094,7 @@ static const extended::ZoneRule kZoneRulesEU[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2126,7 +2126,7 @@ static const extended::ZoneRule kZoneRulesEUAsia[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -2138,7 +2138,7 @@ static const extended::ZoneRule kZoneRulesEUAsia[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2150,7 +2150,7 @@ static const extended::ZoneRule kZoneRulesEUAsia[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2182,7 +2182,7 @@ static const extended::ZoneRule kZoneRulesEcuador[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 5 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2214,7 +2214,7 @@ static const extended::ZoneRule kZoneRulesEgypt[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2226,7 +2226,7 @@ static const extended::ZoneRule kZoneRulesEgypt[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -2238,7 +2238,7 @@ static const extended::ZoneRule kZoneRulesEgypt[] ACE_TIME_PROGMEM = { 4 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2250,7 +2250,7 @@ static const extended::ZoneRule kZoneRulesEgypt[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2262,7 +2262,7 @@ static const extended::ZoneRule kZoneRulesEgypt[] ACE_TIME_PROGMEM = { 4 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2274,7 +2274,7 @@ static const extended::ZoneRule kZoneRulesEgypt[] ACE_TIME_PROGMEM = { 4 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2286,7 +2286,7 @@ static const extended::ZoneRule kZoneRulesEgypt[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2298,7 +2298,7 @@ static const extended::ZoneRule kZoneRulesEgypt[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 10 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2310,7 +2310,7 @@ static const extended::ZoneRule kZoneRulesEgypt[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 9 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -2322,7 +2322,7 @@ static const extended::ZoneRule kZoneRulesEgypt[] ACE_TIME_PROGMEM = { 4 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2334,7 +2334,7 @@ static const extended::ZoneRule kZoneRulesEgypt[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -2346,7 +2346,7 @@ static const extended::ZoneRule kZoneRulesEgypt[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 26 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2358,7 +2358,7 @@ static const extended::ZoneRule kZoneRulesEgypt[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 31 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -2370,7 +2370,7 @@ static const extended::ZoneRule kZoneRulesEgypt[] ACE_TIME_PROGMEM = { 4 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2402,7 +2402,7 @@ static const extended::ZoneRule kZoneRulesEire[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2414,7 +2414,7 @@ static const extended::ZoneRule kZoneRulesEire[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, -4 /*deltaCode*/, '-' /*letter*/, }, @@ -2426,7 +2426,7 @@ static const extended::ZoneRule kZoneRulesEire[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, -4 /*deltaCode*/, '-' /*letter*/, }, @@ -2458,7 +2458,7 @@ static const extended::ZoneRule kZoneRulesFalk[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2470,7 +2470,7 @@ static const extended::ZoneRule kZoneRulesFalk[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 9 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -2482,7 +2482,7 @@ static const extended::ZoneRule kZoneRulesFalk[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 16 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2494,7 +2494,7 @@ static const extended::ZoneRule kZoneRulesFalk[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2506,7 +2506,7 @@ static const extended::ZoneRule kZoneRulesFalk[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -2538,7 +2538,7 @@ static const extended::ZoneRule kZoneRulesFiji[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -2550,7 +2550,7 @@ static const extended::ZoneRule kZoneRulesFiji[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2562,7 +2562,7 @@ static const extended::ZoneRule kZoneRulesFiji[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 29 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -2574,7 +2574,7 @@ static const extended::ZoneRule kZoneRulesFiji[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2586,7 +2586,7 @@ static const extended::ZoneRule kZoneRulesFiji[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -2598,7 +2598,7 @@ static const extended::ZoneRule kZoneRulesFiji[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2610,7 +2610,7 @@ static const extended::ZoneRule kZoneRulesFiji[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 18 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2622,7 +2622,7 @@ static const extended::ZoneRule kZoneRulesFiji[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 18 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2634,7 +2634,7 @@ static const extended::ZoneRule kZoneRulesFiji[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -2646,7 +2646,7 @@ static const extended::ZoneRule kZoneRulesFiji[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 13 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2678,7 +2678,7 @@ static const extended::ZoneRule kZoneRulesGhana[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 31 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2710,7 +2710,7 @@ static const extended::ZoneRule kZoneRulesGuam[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 28 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -2742,7 +2742,7 @@ static const extended::ZoneRule kZoneRulesGuat[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 7 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -2754,7 +2754,7 @@ static const extended::ZoneRule kZoneRulesGuat[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 30 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -2766,7 +2766,7 @@ static const extended::ZoneRule kZoneRulesGuat[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -2798,7 +2798,7 @@ static const extended::ZoneRule kZoneRulesHK[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 16 /*onDayOfMonth*/, 14 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2830,7 +2830,7 @@ static const extended::ZoneRule kZoneRulesHaiti[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -2842,7 +2842,7 @@ static const extended::ZoneRule kZoneRulesHaiti[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -2854,7 +2854,7 @@ static const extended::ZoneRule kZoneRulesHaiti[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -2866,7 +2866,7 @@ static const extended::ZoneRule kZoneRulesHaiti[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -2878,7 +2878,7 @@ static const extended::ZoneRule kZoneRulesHaiti[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -2890,7 +2890,7 @@ static const extended::ZoneRule kZoneRulesHaiti[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -2902,7 +2902,7 @@ static const extended::ZoneRule kZoneRulesHaiti[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -2934,7 +2934,7 @@ static const extended::ZoneRule kZoneRulesHoliday[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -2966,7 +2966,7 @@ static const extended::ZoneRule kZoneRulesHond[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -2978,7 +2978,7 @@ static const extended::ZoneRule kZoneRulesHond[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -2990,7 +2990,7 @@ static const extended::ZoneRule kZoneRulesHond[] ACE_TIME_PROGMEM = { 1 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -3022,7 +3022,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3034,7 +3034,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3046,7 +3046,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3058,7 +3058,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3070,7 +3070,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3082,7 +3082,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3094,7 +3094,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3106,7 +3106,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3118,7 +3118,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3130,7 +3130,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3142,7 +3142,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3154,7 +3154,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3166,7 +3166,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3178,7 +3178,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3190,7 +3190,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3202,7 +3202,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3214,7 +3214,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3226,7 +3226,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3238,7 +3238,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3250,7 +3250,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3262,7 +3262,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3274,7 +3274,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3286,7 +3286,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3298,7 +3298,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3310,7 +3310,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3322,7 +3322,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3334,7 +3334,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3346,7 +3346,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3358,7 +3358,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3370,7 +3370,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3382,7 +3382,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3394,7 +3394,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3406,7 +3406,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3418,7 +3418,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3430,7 +3430,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3442,7 +3442,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3454,7 +3454,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3466,7 +3466,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3478,7 +3478,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3490,7 +3490,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3502,7 +3502,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3514,7 +3514,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3526,7 +3526,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3538,7 +3538,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3550,7 +3550,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3562,7 +3562,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3574,7 +3574,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3586,7 +3586,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3598,7 +3598,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3610,7 +3610,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3622,7 +3622,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3634,7 +3634,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3646,7 +3646,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3658,7 +3658,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3670,7 +3670,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3702,7 +3702,7 @@ static const extended::ZoneRule kZoneRulesIraq[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3714,7 +3714,7 @@ static const extended::ZoneRule kZoneRulesIraq[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3726,7 +3726,7 @@ static const extended::ZoneRule kZoneRulesIraq[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3758,7 +3758,7 @@ static const extended::ZoneRule kZoneRulesJapan[] ACE_TIME_PROGMEM = { 6 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 100 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -3790,7 +3790,7 @@ static const extended::ZoneRule kZoneRulesJordan[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3802,7 +3802,7 @@ static const extended::ZoneRule kZoneRulesJordan[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -3814,7 +3814,7 @@ static const extended::ZoneRule kZoneRulesJordan[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3826,7 +3826,7 @@ static const extended::ZoneRule kZoneRulesJordan[] ACE_TIME_PROGMEM = { 4 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -3838,7 +3838,7 @@ static const extended::ZoneRule kZoneRulesJordan[] ACE_TIME_PROGMEM = { 4 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -3850,7 +3850,7 @@ static const extended::ZoneRule kZoneRulesJordan[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 24 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3862,7 +3862,7 @@ static const extended::ZoneRule kZoneRulesJordan[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3874,7 +3874,7 @@ static const extended::ZoneRule kZoneRulesJordan[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3886,7 +3886,7 @@ static const extended::ZoneRule kZoneRulesJordan[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3898,7 +3898,7 @@ static const extended::ZoneRule kZoneRulesJordan[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3910,7 +3910,7 @@ static const extended::ZoneRule kZoneRulesJordan[] ACE_TIME_PROGMEM = { 4 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -3922,7 +3922,7 @@ static const extended::ZoneRule kZoneRulesJordan[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3954,7 +3954,7 @@ static const extended::ZoneRule kZoneRulesKyrgyz[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3966,7 +3966,7 @@ static const extended::ZoneRule kZoneRulesKyrgyz[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 10 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3978,7 +3978,7 @@ static const extended::ZoneRule kZoneRulesKyrgyz[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 10 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4010,7 +4010,7 @@ static const extended::ZoneRule kZoneRulesLH[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 2 /*deltaCode*/, '-' /*letter*/, }, @@ -4022,7 +4022,7 @@ static const extended::ZoneRule kZoneRulesLH[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4034,7 +4034,7 @@ static const extended::ZoneRule kZoneRulesLH[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4046,7 +4046,7 @@ static const extended::ZoneRule kZoneRulesLH[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 2 /*deltaCode*/, '-' /*letter*/, }, @@ -4058,7 +4058,7 @@ static const extended::ZoneRule kZoneRulesLH[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 2 /*deltaCode*/, '-' /*letter*/, }, @@ -4070,7 +4070,7 @@ static const extended::ZoneRule kZoneRulesLH[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4082,7 +4082,7 @@ static const extended::ZoneRule kZoneRulesLH[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4094,7 +4094,7 @@ static const extended::ZoneRule kZoneRulesLH[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4106,7 +4106,7 @@ static const extended::ZoneRule kZoneRulesLH[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 2 /*deltaCode*/, '-' /*letter*/, }, @@ -4138,7 +4138,7 @@ static const extended::ZoneRule kZoneRulesLebanon[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -4150,7 +4150,7 @@ static const extended::ZoneRule kZoneRulesLebanon[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4162,7 +4162,7 @@ static const extended::ZoneRule kZoneRulesLebanon[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4194,7 +4194,7 @@ static const extended::ZoneRule kZoneRulesLibya[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 4 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4206,7 +4206,7 @@ static const extended::ZoneRule kZoneRulesLibya[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -4218,7 +4218,7 @@ static const extended::ZoneRule kZoneRulesLibya[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4250,7 +4250,7 @@ static const extended::ZoneRule kZoneRulesMacau[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 16 /*onDayOfMonth*/, 14 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -4282,7 +4282,7 @@ static const extended::ZoneRule kZoneRulesMauritius[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4294,7 +4294,7 @@ static const extended::ZoneRule kZoneRulesMauritius[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -4306,7 +4306,7 @@ static const extended::ZoneRule kZoneRulesMauritius[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4338,7 +4338,7 @@ static const extended::ZoneRule kZoneRulesMexico[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 30 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -4350,7 +4350,7 @@ static const extended::ZoneRule kZoneRulesMexico[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -4362,7 +4362,7 @@ static const extended::ZoneRule kZoneRulesMexico[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -4374,7 +4374,7 @@ static const extended::ZoneRule kZoneRulesMexico[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -4386,7 +4386,7 @@ static const extended::ZoneRule kZoneRulesMexico[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -4398,7 +4398,7 @@ static const extended::ZoneRule kZoneRulesMexico[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -4410,7 +4410,7 @@ static const extended::ZoneRule kZoneRulesMexico[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -4442,7 +4442,7 @@ static const extended::ZoneRule kZoneRulesMoldova[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -4454,7 +4454,7 @@ static const extended::ZoneRule kZoneRulesMoldova[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4486,7 +4486,7 @@ static const extended::ZoneRule kZoneRulesMoncton[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -4498,7 +4498,7 @@ static const extended::ZoneRule kZoneRulesMoncton[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -4510,7 +4510,7 @@ static const extended::ZoneRule kZoneRulesMoncton[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -4542,7 +4542,7 @@ static const extended::ZoneRule kZoneRulesMongol[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4554,7 +4554,7 @@ static const extended::ZoneRule kZoneRulesMongol[] ACE_TIME_PROGMEM = { 6 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -4566,7 +4566,7 @@ static const extended::ZoneRule kZoneRulesMongol[] ACE_TIME_PROGMEM = { 6 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4578,7 +4578,7 @@ static const extended::ZoneRule kZoneRulesMongol[] ACE_TIME_PROGMEM = { 6 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -4590,7 +4590,7 @@ static const extended::ZoneRule kZoneRulesMongol[] ACE_TIME_PROGMEM = { 6 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -4602,7 +4602,7 @@ static const extended::ZoneRule kZoneRulesMongol[] ACE_TIME_PROGMEM = { 6 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4634,7 +4634,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 4 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4646,7 +4646,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -4658,7 +4658,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4670,7 +4670,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -4682,7 +4682,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4694,7 +4694,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 2 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -4706,7 +4706,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4718,7 +4718,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 3 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -4730,7 +4730,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 31 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4742,7 +4742,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -4754,7 +4754,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4766,7 +4766,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -4778,7 +4778,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 30 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4790,7 +4790,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 7 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4802,7 +4802,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 10 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -4814,7 +4814,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4826,7 +4826,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -4838,7 +4838,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 28 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4850,7 +4850,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 2 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -4862,7 +4862,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 14 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4874,7 +4874,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 19 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -4886,7 +4886,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 5 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4898,7 +4898,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 10 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -4910,7 +4910,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4922,7 +4922,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 2 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -4934,7 +4934,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 13 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4946,7 +4946,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 17 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -4958,7 +4958,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 5 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, -4 /*deltaCode*/, '-' /*letter*/, }, @@ -4970,7 +4970,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 9 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4982,7 +4982,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 19 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, -4 /*deltaCode*/, '-' /*letter*/, }, @@ -4994,7 +4994,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 24 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5006,7 +5006,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 11 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, -4 /*deltaCode*/, '-' /*letter*/, }, @@ -5018,7 +5018,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 16 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5030,7 +5030,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 27 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, -4 /*deltaCode*/, '-' /*letter*/, }, @@ -5042,7 +5042,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5054,7 +5054,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 19 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, -4 /*deltaCode*/, '-' /*letter*/, }, @@ -5066,7 +5066,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 23 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5078,7 +5078,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 10 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, -4 /*deltaCode*/, '-' /*letter*/, }, @@ -5090,7 +5090,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 14 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5102,7 +5102,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 23 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, -4 /*deltaCode*/, '-' /*letter*/, }, @@ -5114,7 +5114,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 6 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5126,7 +5126,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, -4 /*deltaCode*/, '-' /*letter*/, }, @@ -5138,7 +5138,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5150,7 +5150,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 7 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, -4 /*deltaCode*/, '-' /*letter*/, }, @@ -5162,7 +5162,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 14 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5174,7 +5174,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 23 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, -4 /*deltaCode*/, '-' /*letter*/, }, @@ -5186,7 +5186,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 27 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5198,7 +5198,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 14 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, -4 /*deltaCode*/, '-' /*letter*/, }, @@ -5210,7 +5210,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 18 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5222,7 +5222,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 30 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, -4 /*deltaCode*/, '-' /*letter*/, }, @@ -5234,7 +5234,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 10 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5246,7 +5246,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, -4 /*deltaCode*/, '-' /*letter*/, }, @@ -5258,7 +5258,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 26 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5270,7 +5270,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 14 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, -4 /*deltaCode*/, '-' /*letter*/, }, @@ -5282,7 +5282,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 18 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5294,7 +5294,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 28 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, -4 /*deltaCode*/, '-' /*letter*/, }, @@ -5306,7 +5306,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 9 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5318,7 +5318,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, -4 /*deltaCode*/, '-' /*letter*/, }, @@ -5330,7 +5330,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 25 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5342,7 +5342,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 5 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, -4 /*deltaCode*/, '-' /*letter*/, }, @@ -5354,7 +5354,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 17 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5366,7 +5366,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 28 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, -4 /*deltaCode*/, '-' /*letter*/, }, @@ -5378,7 +5378,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 2 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5390,7 +5390,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 19 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, -4 /*deltaCode*/, '-' /*letter*/, }, @@ -5402,7 +5402,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 23 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5414,7 +5414,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 4 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, -4 /*deltaCode*/, '-' /*letter*/, }, @@ -5426,7 +5426,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5458,7 +5458,7 @@ static const extended::ZoneRule kZoneRulesNC[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 2 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5490,7 +5490,7 @@ static const extended::ZoneRule kZoneRulesNT_YK[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -5502,7 +5502,7 @@ static const extended::ZoneRule kZoneRulesNT_YK[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -5514,7 +5514,7 @@ static const extended::ZoneRule kZoneRulesNT_YK[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -5546,7 +5546,7 @@ static const extended::ZoneRule kZoneRulesNZ[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -5558,7 +5558,7 @@ static const extended::ZoneRule kZoneRulesNZ[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -5570,7 +5570,7 @@ static const extended::ZoneRule kZoneRulesNZ[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -5582,7 +5582,7 @@ static const extended::ZoneRule kZoneRulesNZ[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -5594,7 +5594,7 @@ static const extended::ZoneRule kZoneRulesNZ[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -5626,7 +5626,7 @@ static const extended::ZoneRule kZoneRulesNamibia[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, -4 /*deltaCode*/, 1 /*letter; "WAT"*/, }, @@ -5638,7 +5638,7 @@ static const extended::ZoneRule kZoneRulesNamibia[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 0 /*letter; "CAT"*/, }, @@ -5650,7 +5650,7 @@ static const extended::ZoneRule kZoneRulesNamibia[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, -4 /*deltaCode*/, 1 /*letter; "WAT"*/, }, @@ -5687,7 +5687,7 @@ static const extended::ZoneRule kZoneRulesNic[] ACE_TIME_PROGMEM = { 1 /*onDayOfWeek*/, 23 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -5699,7 +5699,7 @@ static const extended::ZoneRule kZoneRulesNic[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 10 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -5711,7 +5711,7 @@ static const extended::ZoneRule kZoneRulesNic[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -5723,7 +5723,7 @@ static const extended::ZoneRule kZoneRulesNic[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 30 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -5735,7 +5735,7 @@ static const extended::ZoneRule kZoneRulesNic[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -5767,7 +5767,7 @@ static const extended::ZoneRule kZoneRulesPRC[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 11 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -5799,7 +5799,7 @@ static const extended::ZoneRule kZoneRulesPakistan[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5811,7 +5811,7 @@ static const extended::ZoneRule kZoneRulesPakistan[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 2 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -5823,7 +5823,7 @@ static const extended::ZoneRule kZoneRulesPakistan[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 2 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5835,7 +5835,7 @@ static const extended::ZoneRule kZoneRulesPakistan[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -5847,7 +5847,7 @@ static const extended::ZoneRule kZoneRulesPakistan[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5859,7 +5859,7 @@ static const extended::ZoneRule kZoneRulesPakistan[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -5891,7 +5891,7 @@ static const extended::ZoneRule kZoneRulesPalestine[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5903,7 +5903,7 @@ static const extended::ZoneRule kZoneRulesPalestine[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -5915,7 +5915,7 @@ static const extended::ZoneRule kZoneRulesPalestine[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5927,7 +5927,7 @@ static const extended::ZoneRule kZoneRulesPalestine[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5939,7 +5939,7 @@ static const extended::ZoneRule kZoneRulesPalestine[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 4 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5951,7 +5951,7 @@ static const extended::ZoneRule kZoneRulesPalestine[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -5963,7 +5963,7 @@ static const extended::ZoneRule kZoneRulesPalestine[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5975,7 +5975,7 @@ static const extended::ZoneRule kZoneRulesPalestine[] ACE_TIME_PROGMEM = { 4 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5987,7 +5987,7 @@ static const extended::ZoneRule kZoneRulesPalestine[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -5999,7 +5999,7 @@ static const extended::ZoneRule kZoneRulesPalestine[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -6011,7 +6011,7 @@ static const extended::ZoneRule kZoneRulesPalestine[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -6023,7 +6023,7 @@ static const extended::ZoneRule kZoneRulesPalestine[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 26 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -6035,7 +6035,7 @@ static const extended::ZoneRule kZoneRulesPalestine[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 11 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -6047,7 +6047,7 @@ static const extended::ZoneRule kZoneRulesPalestine[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -6059,7 +6059,7 @@ static const extended::ZoneRule kZoneRulesPalestine[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -6071,7 +6071,7 @@ static const extended::ZoneRule kZoneRulesPalestine[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 30 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -6083,7 +6083,7 @@ static const extended::ZoneRule kZoneRulesPalestine[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 30 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -6095,7 +6095,7 @@ static const extended::ZoneRule kZoneRulesPalestine[] ACE_TIME_PROGMEM = { 4 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -6107,7 +6107,7 @@ static const extended::ZoneRule kZoneRulesPalestine[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -6119,7 +6119,7 @@ static const extended::ZoneRule kZoneRulesPalestine[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -6131,7 +6131,7 @@ static const extended::ZoneRule kZoneRulesPalestine[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -6143,7 +6143,7 @@ static const extended::ZoneRule kZoneRulesPalestine[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -6155,7 +6155,7 @@ static const extended::ZoneRule kZoneRulesPalestine[] ACE_TIME_PROGMEM = { 6 /*onDayOfWeek*/, 24 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -6167,7 +6167,7 @@ static const extended::ZoneRule kZoneRulesPalestine[] ACE_TIME_PROGMEM = { 6 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -6199,7 +6199,7 @@ static const extended::ZoneRule kZoneRulesPara[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -6211,7 +6211,7 @@ static const extended::ZoneRule kZoneRulesPara[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -6223,7 +6223,7 @@ static const extended::ZoneRule kZoneRulesPara[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -6235,7 +6235,7 @@ static const extended::ZoneRule kZoneRulesPara[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -6247,7 +6247,7 @@ static const extended::ZoneRule kZoneRulesPara[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -6259,7 +6259,7 @@ static const extended::ZoneRule kZoneRulesPara[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -6271,7 +6271,7 @@ static const extended::ZoneRule kZoneRulesPara[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -6283,7 +6283,7 @@ static const extended::ZoneRule kZoneRulesPara[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -6295,7 +6295,7 @@ static const extended::ZoneRule kZoneRulesPara[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -6307,7 +6307,7 @@ static const extended::ZoneRule kZoneRulesPara[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -6339,7 +6339,7 @@ static const extended::ZoneRule kZoneRulesPeru[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -6371,7 +6371,7 @@ static const extended::ZoneRule kZoneRulesPhil[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -6403,7 +6403,7 @@ static const extended::ZoneRule kZoneRulesROK[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -6435,7 +6435,7 @@ static const extended::ZoneRule kZoneRulesRussia[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -6447,7 +6447,7 @@ static const extended::ZoneRule kZoneRulesRussia[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -6459,7 +6459,7 @@ static const extended::ZoneRule kZoneRulesRussia[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -6491,7 +6491,7 @@ static const extended::ZoneRule kZoneRulesRussiaAsia[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -6503,7 +6503,7 @@ static const extended::ZoneRule kZoneRulesRussiaAsia[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -6515,7 +6515,7 @@ static const extended::ZoneRule kZoneRulesRussiaAsia[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -6547,7 +6547,7 @@ static const extended::ZoneRule kZoneRulesSA[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -6579,7 +6579,7 @@ static const extended::ZoneRule kZoneRulesSalv[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -6611,7 +6611,7 @@ static const extended::ZoneRule kZoneRulesSanLuis[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -6623,7 +6623,7 @@ static const extended::ZoneRule kZoneRulesSanLuis[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -6635,7 +6635,7 @@ static const extended::ZoneRule kZoneRulesSanLuis[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -6667,7 +6667,7 @@ static const extended::ZoneRule kZoneRulesStJohns[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -6679,7 +6679,7 @@ static const extended::ZoneRule kZoneRulesStJohns[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 8 /*deltaCode*/, 0 /*letter; "DD"*/, }, @@ -6691,7 +6691,7 @@ static const extended::ZoneRule kZoneRulesStJohns[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -6703,7 +6703,7 @@ static const extended::ZoneRule kZoneRulesStJohns[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -6715,7 +6715,7 @@ static const extended::ZoneRule kZoneRulesStJohns[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -6751,7 +6751,7 @@ static const extended::ZoneRule kZoneRulesSudan[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -6783,7 +6783,7 @@ static const extended::ZoneRule kZoneRulesSyria[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -6795,7 +6795,7 @@ static const extended::ZoneRule kZoneRulesSyria[] ACE_TIME_PROGMEM = { 1 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -6807,7 +6807,7 @@ static const extended::ZoneRule kZoneRulesSyria[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -6819,7 +6819,7 @@ static const extended::ZoneRule kZoneRulesSyria[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -6831,7 +6831,7 @@ static const extended::ZoneRule kZoneRulesSyria[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -6843,7 +6843,7 @@ static const extended::ZoneRule kZoneRulesSyria[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -6855,7 +6855,7 @@ static const extended::ZoneRule kZoneRulesSyria[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -6867,7 +6867,7 @@ static const extended::ZoneRule kZoneRulesSyria[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -6879,7 +6879,7 @@ static const extended::ZoneRule kZoneRulesSyria[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -6891,7 +6891,7 @@ static const extended::ZoneRule kZoneRulesSyria[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -6903,7 +6903,7 @@ static const extended::ZoneRule kZoneRulesSyria[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -6915,7 +6915,7 @@ static const extended::ZoneRule kZoneRulesSyria[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -6947,7 +6947,7 @@ static const extended::ZoneRule kZoneRulesTaiwan[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -6979,7 +6979,7 @@ static const extended::ZoneRule kZoneRulesThule[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -6991,7 +6991,7 @@ static const extended::ZoneRule kZoneRulesThule[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -7003,7 +7003,7 @@ static const extended::ZoneRule kZoneRulesThule[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -7015,7 +7015,7 @@ static const extended::ZoneRule kZoneRulesThule[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -7027,7 +7027,7 @@ static const extended::ZoneRule kZoneRulesThule[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -7059,7 +7059,7 @@ static const extended::ZoneRule kZoneRulesTonga[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -7071,7 +7071,7 @@ static const extended::ZoneRule kZoneRulesTonga[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 7 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -7083,7 +7083,7 @@ static const extended::ZoneRule kZoneRulesTonga[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 19 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -7095,7 +7095,7 @@ static const extended::ZoneRule kZoneRulesTonga[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -7107,7 +7107,7 @@ static const extended::ZoneRule kZoneRulesTonga[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -7119,7 +7119,7 @@ static const extended::ZoneRule kZoneRulesTonga[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -7131,7 +7131,7 @@ static const extended::ZoneRule kZoneRulesTonga[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -7163,7 +7163,7 @@ static const extended::ZoneRule kZoneRulesTroll[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 0 /*letter; "+00"*/, }, @@ -7175,7 +7175,7 @@ static const extended::ZoneRule kZoneRulesTroll[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 8 /*deltaCode*/, 1 /*letter; "+02"*/, }, @@ -7187,7 +7187,7 @@ static const extended::ZoneRule kZoneRulesTroll[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 0 /*deltaCode*/, 0 /*letter; "+00"*/, }, @@ -7224,7 +7224,7 @@ static const extended::ZoneRule kZoneRulesTunisia[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -7236,7 +7236,7 @@ static const extended::ZoneRule kZoneRulesTunisia[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -7248,7 +7248,7 @@ static const extended::ZoneRule kZoneRulesTunisia[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 30 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -7260,7 +7260,7 @@ static const extended::ZoneRule kZoneRulesTunisia[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -7272,7 +7272,7 @@ static const extended::ZoneRule kZoneRulesTunisia[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -7304,7 +7304,7 @@ static const extended::ZoneRule kZoneRulesTurkey[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -7316,7 +7316,7 @@ static const extended::ZoneRule kZoneRulesTurkey[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -7328,7 +7328,7 @@ static const extended::ZoneRule kZoneRulesTurkey[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -7360,7 +7360,7 @@ static const extended::ZoneRule kZoneRulesUS[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -7372,7 +7372,7 @@ static const extended::ZoneRule kZoneRulesUS[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -7384,7 +7384,7 @@ static const extended::ZoneRule kZoneRulesUS[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -7396,7 +7396,7 @@ static const extended::ZoneRule kZoneRulesUS[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -7408,7 +7408,7 @@ static const extended::ZoneRule kZoneRulesUS[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -7440,7 +7440,7 @@ static const extended::ZoneRule kZoneRulesUruguay[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 28 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -7452,7 +7452,7 @@ static const extended::ZoneRule kZoneRulesUruguay[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 19 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -7464,7 +7464,7 @@ static const extended::ZoneRule kZoneRulesUruguay[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 27 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -7476,7 +7476,7 @@ static const extended::ZoneRule kZoneRulesUruguay[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 9 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -7488,7 +7488,7 @@ static const extended::ZoneRule kZoneRulesUruguay[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -7500,7 +7500,7 @@ static const extended::ZoneRule kZoneRulesUruguay[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -7532,7 +7532,7 @@ static const extended::ZoneRule kZoneRulesVanuatu[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 23 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -7564,7 +7564,7 @@ static const extended::ZoneRule kZoneRulesWS[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -7576,7 +7576,7 @@ static const extended::ZoneRule kZoneRulesWS[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -7588,7 +7588,7 @@ static const extended::ZoneRule kZoneRulesWS[] ACE_TIME_PROGMEM = { 6 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 16 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -7600,7 +7600,7 @@ static const extended::ZoneRule kZoneRulesWS[] ACE_TIME_PROGMEM = { 6 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -7612,7 +7612,7 @@ static const extended::ZoneRule kZoneRulesWS[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 16 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -7624,7 +7624,7 @@ static const extended::ZoneRule kZoneRulesWS[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -7656,7 +7656,7 @@ static const extended::ZoneRule kZoneRulesWinn[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -7668,7 +7668,7 @@ static const extended::ZoneRule kZoneRulesWinn[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -7680,7 +7680,7 @@ static const extended::ZoneRule kZoneRulesWinn[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -7712,7 +7712,7 @@ static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 6 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -7724,7 +7724,7 @@ static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 2 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -7736,7 +7736,7 @@ static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 3 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -7748,7 +7748,7 @@ static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 14 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -7760,7 +7760,7 @@ static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 6 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -7772,7 +7772,7 @@ static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 9 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -7784,7 +7784,7 @@ static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 24 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -7796,7 +7796,7 @@ static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 29 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -7808,7 +7808,7 @@ static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 7 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -7820,7 +7820,7 @@ static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 28 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -7832,7 +7832,7 @@ static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 3 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -7844,7 +7844,7 @@ static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 7 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -7856,7 +7856,7 @@ static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -7868,7 +7868,7 @@ static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -7880,7 +7880,7 @@ static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 9 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -7892,7 +7892,7 @@ static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 26 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -7904,7 +7904,7 @@ static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -7916,7 +7916,7 @@ static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 16 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -7928,7 +7928,7 @@ static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 5 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -7940,7 +7940,7 @@ static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 27 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -7952,7 +7952,7 @@ static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 12 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -7964,7 +7964,7 @@ static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -7976,7 +7976,7 @@ static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 2 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -7988,7 +7988,7 @@ static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 26 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -8000,7 +8000,7 @@ static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 23 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -8012,7 +8012,7 @@ static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 23 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -8024,7 +8024,7 @@ static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, diff --git a/tests/validation/BasicValidationUsingJavaTest/zonedb2018g/zone_infos.cpp b/tests/validation/BasicValidationUsingJavaTest/zonedb2018g/zone_infos.cpp index ee6750415..431819ce3 100644 --- a/tests/validation/BasicValidationUsingJavaTest/zonedb2018g/zone_infos.cpp +++ b/tests/validation/BasicValidationUsingJavaTest/zonedb2018g/zone_infos.cpp @@ -55,7 +55,7 @@ static const basic::ZoneEra kZoneEraAfrica_Abidjan[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -90,7 +90,7 @@ static const basic::ZoneEra kZoneEraAfrica_Accra[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -125,7 +125,7 @@ static const basic::ZoneEra kZoneEraAfrica_Algiers[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -160,7 +160,7 @@ static const basic::ZoneEra kZoneEraAfrica_Bissau[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -195,7 +195,7 @@ static const basic::ZoneEra kZoneEraAfrica_Ceuta[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -230,7 +230,7 @@ static const basic::ZoneEra kZoneEraAfrica_Johannesburg[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -265,7 +265,7 @@ static const basic::ZoneEra kZoneEraAfrica_Lagos[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -300,7 +300,7 @@ static const basic::ZoneEra kZoneEraAfrica_Maputo[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -335,7 +335,7 @@ static const basic::ZoneEra kZoneEraAfrica_Monrovia[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -370,7 +370,7 @@ static const basic::ZoneEra kZoneEraAfrica_Nairobi[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -405,7 +405,7 @@ static const basic::ZoneEra kZoneEraAfrica_Ndjamena[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -440,7 +440,7 @@ static const basic::ZoneEra kZoneEraAfrica_Tunis[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -475,7 +475,7 @@ static const basic::ZoneEra kZoneEraAmerica_Adak[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -510,7 +510,7 @@ static const basic::ZoneEra kZoneEraAmerica_Anchorage[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -545,7 +545,7 @@ static const basic::ZoneEra kZoneEraAmerica_Asuncion[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -580,7 +580,7 @@ static const basic::ZoneEra kZoneEraAmerica_Atikokan[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -615,7 +615,7 @@ static const basic::ZoneEra kZoneEraAmerica_Barbados[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -650,7 +650,7 @@ static const basic::ZoneEra kZoneEraAmerica_Belem[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -685,7 +685,7 @@ static const basic::ZoneEra kZoneEraAmerica_Blanc_Sablon[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -720,7 +720,7 @@ static const basic::ZoneEra kZoneEraAmerica_Bogota[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -755,7 +755,7 @@ static const basic::ZoneEra kZoneEraAmerica_Boise[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -790,7 +790,7 @@ static const basic::ZoneEra kZoneEraAmerica_Campo_Grande[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -825,7 +825,7 @@ static const basic::ZoneEra kZoneEraAmerica_Cayenne[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -860,7 +860,7 @@ static const basic::ZoneEra kZoneEraAmerica_Chicago[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -895,7 +895,7 @@ static const basic::ZoneEra kZoneEraAmerica_Chihuahua[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -930,7 +930,7 @@ static const basic::ZoneEra kZoneEraAmerica_Costa_Rica[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -965,7 +965,7 @@ static const basic::ZoneEra kZoneEraAmerica_Creston[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1000,7 +1000,7 @@ static const basic::ZoneEra kZoneEraAmerica_Curacao[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1035,7 +1035,7 @@ static const basic::ZoneEra kZoneEraAmerica_Danmarkshavn[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1070,7 +1070,7 @@ static const basic::ZoneEra kZoneEraAmerica_Dawson[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1105,7 +1105,7 @@ static const basic::ZoneEra kZoneEraAmerica_Dawson_Creek[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1140,7 +1140,7 @@ static const basic::ZoneEra kZoneEraAmerica_Denver[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1175,7 +1175,7 @@ static const basic::ZoneEra kZoneEraAmerica_Detroit[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1210,7 +1210,7 @@ static const basic::ZoneEra kZoneEraAmerica_Edmonton[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1245,7 +1245,7 @@ static const basic::ZoneEra kZoneEraAmerica_El_Salvador[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1280,7 +1280,7 @@ static const basic::ZoneEra kZoneEraAmerica_Glace_Bay[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1315,7 +1315,7 @@ static const basic::ZoneEra kZoneEraAmerica_Godthab[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1350,7 +1350,7 @@ static const basic::ZoneEra kZoneEraAmerica_Guatemala[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1385,7 +1385,7 @@ static const basic::ZoneEra kZoneEraAmerica_Guayaquil[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1420,7 +1420,7 @@ static const basic::ZoneEra kZoneEraAmerica_Guyana[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1455,7 +1455,7 @@ static const basic::ZoneEra kZoneEraAmerica_Halifax[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1490,7 +1490,7 @@ static const basic::ZoneEra kZoneEraAmerica_Havana[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1525,7 +1525,7 @@ static const basic::ZoneEra kZoneEraAmerica_Hermosillo[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -7:00 - MST { @@ -1537,7 +1537,7 @@ static const basic::ZoneEra kZoneEraAmerica_Hermosillo[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1572,7 +1572,7 @@ static const basic::ZoneEra kZoneEraAmerica_Indiana_Indianapolis[] ACE_TIME_PROG 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -5:00 US E%sT { @@ -1584,7 +1584,7 @@ static const basic::ZoneEra kZoneEraAmerica_Indiana_Indianapolis[] ACE_TIME_PROG 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1619,7 +1619,7 @@ static const basic::ZoneEra kZoneEraAmerica_Indiana_Marengo[] ACE_TIME_PROGMEM = 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -5:00 US E%sT { @@ -1631,7 +1631,7 @@ static const basic::ZoneEra kZoneEraAmerica_Indiana_Marengo[] ACE_TIME_PROGMEM = 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1666,7 +1666,7 @@ static const basic::ZoneEra kZoneEraAmerica_Indiana_Vevay[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -5:00 US E%sT { @@ -1678,7 +1678,7 @@ static const basic::ZoneEra kZoneEraAmerica_Indiana_Vevay[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1713,7 +1713,7 @@ static const basic::ZoneEra kZoneEraAmerica_Inuvik[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1748,7 +1748,7 @@ static const basic::ZoneEra kZoneEraAmerica_Jamaica[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1783,7 +1783,7 @@ static const basic::ZoneEra kZoneEraAmerica_Juneau[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1818,7 +1818,7 @@ static const basic::ZoneEra kZoneEraAmerica_Kentucky_Louisville[] ACE_TIME_PROGM 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1853,7 +1853,7 @@ static const basic::ZoneEra kZoneEraAmerica_La_Paz[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1888,7 +1888,7 @@ static const basic::ZoneEra kZoneEraAmerica_Lima[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1923,7 +1923,7 @@ static const basic::ZoneEra kZoneEraAmerica_Los_Angeles[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1958,7 +1958,7 @@ static const basic::ZoneEra kZoneEraAmerica_Managua[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1993,7 +1993,7 @@ static const basic::ZoneEra kZoneEraAmerica_Manaus[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2028,7 +2028,7 @@ static const basic::ZoneEra kZoneEraAmerica_Martinique[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2063,7 +2063,7 @@ static const basic::ZoneEra kZoneEraAmerica_Matamoros[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -6:00 US C%sT { @@ -2075,7 +2075,7 @@ static const basic::ZoneEra kZoneEraAmerica_Matamoros[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2110,7 +2110,7 @@ static const basic::ZoneEra kZoneEraAmerica_Mazatlan[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2145,7 +2145,7 @@ static const basic::ZoneEra kZoneEraAmerica_Menominee[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2180,7 +2180,7 @@ static const basic::ZoneEra kZoneEraAmerica_Merida[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2215,7 +2215,7 @@ static const basic::ZoneEra kZoneEraAmerica_Miquelon[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2250,7 +2250,7 @@ static const basic::ZoneEra kZoneEraAmerica_Moncton[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 Canada A%sT { @@ -2262,7 +2262,7 @@ static const basic::ZoneEra kZoneEraAmerica_Moncton[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2297,7 +2297,7 @@ static const basic::ZoneEra kZoneEraAmerica_Monterrey[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2332,7 +2332,7 @@ static const basic::ZoneEra kZoneEraAmerica_Montevideo[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2367,7 +2367,7 @@ static const basic::ZoneEra kZoneEraAmerica_Nassau[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2402,7 +2402,7 @@ static const basic::ZoneEra kZoneEraAmerica_New_York[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2437,7 +2437,7 @@ static const basic::ZoneEra kZoneEraAmerica_Nipigon[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2472,7 +2472,7 @@ static const basic::ZoneEra kZoneEraAmerica_Nome[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2507,7 +2507,7 @@ static const basic::ZoneEra kZoneEraAmerica_North_Dakota_Center[] ACE_TIME_PROGM 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2542,7 +2542,7 @@ static const basic::ZoneEra kZoneEraAmerica_Ojinaga[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -7:00 US M%sT { @@ -2554,7 +2554,7 @@ static const basic::ZoneEra kZoneEraAmerica_Ojinaga[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2589,7 +2589,7 @@ static const basic::ZoneEra kZoneEraAmerica_Panama[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2624,7 +2624,7 @@ static const basic::ZoneEra kZoneEraAmerica_Paramaribo[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2659,7 +2659,7 @@ static const basic::ZoneEra kZoneEraAmerica_Phoenix[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2694,7 +2694,7 @@ static const basic::ZoneEra kZoneEraAmerica_Port_au_Prince[] ACE_TIME_PROGMEM = 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2729,7 +2729,7 @@ static const basic::ZoneEra kZoneEraAmerica_Port_of_Spain[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2764,7 +2764,7 @@ static const basic::ZoneEra kZoneEraAmerica_Porto_Velho[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2799,7 +2799,7 @@ static const basic::ZoneEra kZoneEraAmerica_Puerto_Rico[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2834,7 +2834,7 @@ static const basic::ZoneEra kZoneEraAmerica_Rainy_River[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2869,7 +2869,7 @@ static const basic::ZoneEra kZoneEraAmerica_Regina[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2904,7 +2904,7 @@ static const basic::ZoneEra kZoneEraAmerica_Santiago[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2939,7 +2939,7 @@ static const basic::ZoneEra kZoneEraAmerica_Sao_Paulo[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2974,7 +2974,7 @@ static const basic::ZoneEra kZoneEraAmerica_Scoresbysund[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3009,7 +3009,7 @@ static const basic::ZoneEra kZoneEraAmerica_Sitka[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3044,7 +3044,7 @@ static const basic::ZoneEra kZoneEraAmerica_Swift_Current[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3079,7 +3079,7 @@ static const basic::ZoneEra kZoneEraAmerica_Tegucigalpa[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3114,7 +3114,7 @@ static const basic::ZoneEra kZoneEraAmerica_Thule[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3149,7 +3149,7 @@ static const basic::ZoneEra kZoneEraAmerica_Thunder_Bay[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3184,7 +3184,7 @@ static const basic::ZoneEra kZoneEraAmerica_Toronto[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3219,7 +3219,7 @@ static const basic::ZoneEra kZoneEraAmerica_Vancouver[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3254,7 +3254,7 @@ static const basic::ZoneEra kZoneEraAmerica_Whitehorse[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3289,7 +3289,7 @@ static const basic::ZoneEra kZoneEraAmerica_Winnipeg[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -6:00 Canada C%sT { @@ -3301,7 +3301,7 @@ static const basic::ZoneEra kZoneEraAmerica_Winnipeg[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3336,7 +3336,7 @@ static const basic::ZoneEra kZoneEraAmerica_Yakutat[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3371,7 +3371,7 @@ static const basic::ZoneEra kZoneEraAmerica_Yellowknife[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3406,7 +3406,7 @@ static const basic::ZoneEra kZoneEraAntarctica_DumontDUrville[] ACE_TIME_PROGMEM 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3441,7 +3441,7 @@ static const basic::ZoneEra kZoneEraAntarctica_Rothera[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3476,7 +3476,7 @@ static const basic::ZoneEra kZoneEraAntarctica_Syowa[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3511,7 +3511,7 @@ static const basic::ZoneEra kZoneEraAntarctica_Vostok[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3546,7 +3546,7 @@ static const basic::ZoneEra kZoneEraAsia_Amman[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3581,7 +3581,7 @@ static const basic::ZoneEra kZoneEraAsia_Ashgabat[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3616,7 +3616,7 @@ static const basic::ZoneEra kZoneEraAsia_Baghdad[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3651,7 +3651,7 @@ static const basic::ZoneEra kZoneEraAsia_Baku[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3686,7 +3686,7 @@ static const basic::ZoneEra kZoneEraAsia_Bangkok[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3721,7 +3721,7 @@ static const basic::ZoneEra kZoneEraAsia_Beirut[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3756,7 +3756,7 @@ static const basic::ZoneEra kZoneEraAsia_Brunei[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3791,7 +3791,7 @@ static const basic::ZoneEra kZoneEraAsia_Damascus[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3826,7 +3826,7 @@ static const basic::ZoneEra kZoneEraAsia_Dhaka[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 6:00 Dhaka +06/+07 { @@ -3838,7 +3838,7 @@ static const basic::ZoneEra kZoneEraAsia_Dhaka[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3873,7 +3873,7 @@ static const basic::ZoneEra kZoneEraAsia_Dubai[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3908,7 +3908,7 @@ static const basic::ZoneEra kZoneEraAsia_Dushanbe[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3943,7 +3943,7 @@ static const basic::ZoneEra kZoneEraAsia_Ho_Chi_Minh[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3978,7 +3978,7 @@ static const basic::ZoneEra kZoneEraAsia_Hong_Kong[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4013,7 +4013,7 @@ static const basic::ZoneEra kZoneEraAsia_Hovd[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4048,7 +4048,7 @@ static const basic::ZoneEra kZoneEraAsia_Jakarta[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4083,7 +4083,7 @@ static const basic::ZoneEra kZoneEraAsia_Jayapura[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4118,7 +4118,7 @@ static const basic::ZoneEra kZoneEraAsia_Jerusalem[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4153,7 +4153,7 @@ static const basic::ZoneEra kZoneEraAsia_Kabul[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4188,7 +4188,7 @@ static const basic::ZoneEra kZoneEraAsia_Karachi[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4223,7 +4223,7 @@ static const basic::ZoneEra kZoneEraAsia_Kathmandu[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4258,7 +4258,7 @@ static const basic::ZoneEra kZoneEraAsia_Kolkata[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4293,7 +4293,7 @@ static const basic::ZoneEra kZoneEraAsia_Kuala_Lumpur[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4328,7 +4328,7 @@ static const basic::ZoneEra kZoneEraAsia_Kuching[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4363,7 +4363,7 @@ static const basic::ZoneEra kZoneEraAsia_Macau[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4398,7 +4398,7 @@ static const basic::ZoneEra kZoneEraAsia_Makassar[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4433,7 +4433,7 @@ static const basic::ZoneEra kZoneEraAsia_Manila[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4468,7 +4468,7 @@ static const basic::ZoneEra kZoneEraAsia_Nicosia[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4503,7 +4503,7 @@ static const basic::ZoneEra kZoneEraAsia_Pontianak[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4538,7 +4538,7 @@ static const basic::ZoneEra kZoneEraAsia_Qatar[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4573,7 +4573,7 @@ static const basic::ZoneEra kZoneEraAsia_Riyadh[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4608,7 +4608,7 @@ static const basic::ZoneEra kZoneEraAsia_Samarkand[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4643,7 +4643,7 @@ static const basic::ZoneEra kZoneEraAsia_Seoul[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4678,7 +4678,7 @@ static const basic::ZoneEra kZoneEraAsia_Shanghai[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4713,7 +4713,7 @@ static const basic::ZoneEra kZoneEraAsia_Singapore[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4748,7 +4748,7 @@ static const basic::ZoneEra kZoneEraAsia_Taipei[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4783,7 +4783,7 @@ static const basic::ZoneEra kZoneEraAsia_Tashkent[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4818,7 +4818,7 @@ static const basic::ZoneEra kZoneEraAsia_Tehran[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4853,7 +4853,7 @@ static const basic::ZoneEra kZoneEraAsia_Thimphu[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4888,7 +4888,7 @@ static const basic::ZoneEra kZoneEraAsia_Tokyo[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4923,7 +4923,7 @@ static const basic::ZoneEra kZoneEraAsia_Ulaanbaatar[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4958,7 +4958,7 @@ static const basic::ZoneEra kZoneEraAsia_Urumqi[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4993,7 +4993,7 @@ static const basic::ZoneEra kZoneEraAsia_Yangon[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5028,7 +5028,7 @@ static const basic::ZoneEra kZoneEraAsia_Yerevan[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 4:00 Armenia +04/+05 { @@ -5040,7 +5040,7 @@ static const basic::ZoneEra kZoneEraAsia_Yerevan[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5075,7 +5075,7 @@ static const basic::ZoneEra kZoneEraAtlantic_Azores[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5110,7 +5110,7 @@ static const basic::ZoneEra kZoneEraAtlantic_Bermuda[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5145,7 +5145,7 @@ static const basic::ZoneEra kZoneEraAtlantic_Canary[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5180,7 +5180,7 @@ static const basic::ZoneEra kZoneEraAtlantic_Cape_Verde[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5215,7 +5215,7 @@ static const basic::ZoneEra kZoneEraAtlantic_Faroe[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5250,7 +5250,7 @@ static const basic::ZoneEra kZoneEraAtlantic_Madeira[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5285,7 +5285,7 @@ static const basic::ZoneEra kZoneEraAtlantic_Reykjavik[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5320,7 +5320,7 @@ static const basic::ZoneEra kZoneEraAtlantic_South_Georgia[] ACE_TIME_PROGMEM = 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5355,7 +5355,7 @@ static const basic::ZoneEra kZoneEraAustralia_Adelaide[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5390,7 +5390,7 @@ static const basic::ZoneEra kZoneEraAustralia_Brisbane[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5425,7 +5425,7 @@ static const basic::ZoneEra kZoneEraAustralia_Broken_Hill[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 9:30 AS AC%sT { @@ -5437,7 +5437,7 @@ static const basic::ZoneEra kZoneEraAustralia_Broken_Hill[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5472,7 +5472,7 @@ static const basic::ZoneEra kZoneEraAustralia_Currie[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5507,7 +5507,7 @@ static const basic::ZoneEra kZoneEraAustralia_Darwin[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5542,7 +5542,7 @@ static const basic::ZoneEra kZoneEraAustralia_Eucla[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5577,7 +5577,7 @@ static const basic::ZoneEra kZoneEraAustralia_Hobart[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5612,7 +5612,7 @@ static const basic::ZoneEra kZoneEraAustralia_Lindeman[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5647,7 +5647,7 @@ static const basic::ZoneEra kZoneEraAustralia_Lord_Howe[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5682,7 +5682,7 @@ static const basic::ZoneEra kZoneEraAustralia_Melbourne[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5717,7 +5717,7 @@ static const basic::ZoneEra kZoneEraAustralia_Perth[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5752,7 +5752,7 @@ static const basic::ZoneEra kZoneEraAustralia_Sydney[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5787,7 +5787,7 @@ static const basic::ZoneEra kZoneEraCET[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5822,7 +5822,7 @@ static const basic::ZoneEra kZoneEraCST6CDT[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5857,7 +5857,7 @@ static const basic::ZoneEra kZoneEraEET[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5892,7 +5892,7 @@ static const basic::ZoneEra kZoneEraEST[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5927,7 +5927,7 @@ static const basic::ZoneEra kZoneEraEST5EDT[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5962,7 +5962,7 @@ static const basic::ZoneEra kZoneEraEtc_GMT[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5997,7 +5997,7 @@ static const basic::ZoneEra kZoneEraEtc_GMT_PLUS_1[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6032,7 +6032,7 @@ static const basic::ZoneEra kZoneEraEtc_GMT_PLUS_10[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6067,7 +6067,7 @@ static const basic::ZoneEra kZoneEraEtc_GMT_PLUS_11[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6102,7 +6102,7 @@ static const basic::ZoneEra kZoneEraEtc_GMT_PLUS_12[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6137,7 +6137,7 @@ static const basic::ZoneEra kZoneEraEtc_GMT_PLUS_2[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6172,7 +6172,7 @@ static const basic::ZoneEra kZoneEraEtc_GMT_PLUS_3[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6207,7 +6207,7 @@ static const basic::ZoneEra kZoneEraEtc_GMT_PLUS_4[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6242,7 +6242,7 @@ static const basic::ZoneEra kZoneEraEtc_GMT_PLUS_5[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6277,7 +6277,7 @@ static const basic::ZoneEra kZoneEraEtc_GMT_PLUS_6[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6312,7 +6312,7 @@ static const basic::ZoneEra kZoneEraEtc_GMT_PLUS_7[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6347,7 +6347,7 @@ static const basic::ZoneEra kZoneEraEtc_GMT_PLUS_8[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6382,7 +6382,7 @@ static const basic::ZoneEra kZoneEraEtc_GMT_PLUS_9[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6417,7 +6417,7 @@ static const basic::ZoneEra kZoneEraEtc_GMT_1[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6452,7 +6452,7 @@ static const basic::ZoneEra kZoneEraEtc_GMT_10[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6487,7 +6487,7 @@ static const basic::ZoneEra kZoneEraEtc_GMT_11[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6522,7 +6522,7 @@ static const basic::ZoneEra kZoneEraEtc_GMT_12[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6557,7 +6557,7 @@ static const basic::ZoneEra kZoneEraEtc_GMT_13[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6592,7 +6592,7 @@ static const basic::ZoneEra kZoneEraEtc_GMT_14[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6627,7 +6627,7 @@ static const basic::ZoneEra kZoneEraEtc_GMT_2[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6662,7 +6662,7 @@ static const basic::ZoneEra kZoneEraEtc_GMT_3[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6697,7 +6697,7 @@ static const basic::ZoneEra kZoneEraEtc_GMT_4[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6732,7 +6732,7 @@ static const basic::ZoneEra kZoneEraEtc_GMT_5[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6767,7 +6767,7 @@ static const basic::ZoneEra kZoneEraEtc_GMT_6[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6802,7 +6802,7 @@ static const basic::ZoneEra kZoneEraEtc_GMT_7[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6837,7 +6837,7 @@ static const basic::ZoneEra kZoneEraEtc_GMT_8[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6872,7 +6872,7 @@ static const basic::ZoneEra kZoneEraEtc_GMT_9[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6907,7 +6907,7 @@ static const basic::ZoneEra kZoneEraEtc_UCT[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6942,7 +6942,7 @@ static const basic::ZoneEra kZoneEraEtc_UTC[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6977,7 +6977,7 @@ static const basic::ZoneEra kZoneEraEurope_Amsterdam[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7012,7 +7012,7 @@ static const basic::ZoneEra kZoneEraEurope_Andorra[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7047,7 +7047,7 @@ static const basic::ZoneEra kZoneEraEurope_Athens[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7082,7 +7082,7 @@ static const basic::ZoneEra kZoneEraEurope_Belgrade[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7117,7 +7117,7 @@ static const basic::ZoneEra kZoneEraEurope_Berlin[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7152,7 +7152,7 @@ static const basic::ZoneEra kZoneEraEurope_Brussels[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7187,7 +7187,7 @@ static const basic::ZoneEra kZoneEraEurope_Bucharest[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7222,7 +7222,7 @@ static const basic::ZoneEra kZoneEraEurope_Budapest[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7257,7 +7257,7 @@ static const basic::ZoneEra kZoneEraEurope_Chisinau[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7292,7 +7292,7 @@ static const basic::ZoneEra kZoneEraEurope_Copenhagen[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7327,7 +7327,7 @@ static const basic::ZoneEra kZoneEraEurope_Dublin[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7362,7 +7362,7 @@ static const basic::ZoneEra kZoneEraEurope_Gibraltar[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7397,7 +7397,7 @@ static const basic::ZoneEra kZoneEraEurope_Helsinki[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7432,7 +7432,7 @@ static const basic::ZoneEra kZoneEraEurope_Kiev[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7467,7 +7467,7 @@ static const basic::ZoneEra kZoneEraEurope_Lisbon[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7502,7 +7502,7 @@ static const basic::ZoneEra kZoneEraEurope_London[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7537,7 +7537,7 @@ static const basic::ZoneEra kZoneEraEurope_Luxembourg[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7572,7 +7572,7 @@ static const basic::ZoneEra kZoneEraEurope_Madrid[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7607,7 +7607,7 @@ static const basic::ZoneEra kZoneEraEurope_Malta[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7642,7 +7642,7 @@ static const basic::ZoneEra kZoneEraEurope_Monaco[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7677,7 +7677,7 @@ static const basic::ZoneEra kZoneEraEurope_Oslo[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7712,7 +7712,7 @@ static const basic::ZoneEra kZoneEraEurope_Paris[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7747,7 +7747,7 @@ static const basic::ZoneEra kZoneEraEurope_Prague[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7782,7 +7782,7 @@ static const basic::ZoneEra kZoneEraEurope_Rome[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7817,7 +7817,7 @@ static const basic::ZoneEra kZoneEraEurope_Sofia[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7852,7 +7852,7 @@ static const basic::ZoneEra kZoneEraEurope_Stockholm[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7887,7 +7887,7 @@ static const basic::ZoneEra kZoneEraEurope_Tirane[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7922,7 +7922,7 @@ static const basic::ZoneEra kZoneEraEurope_Uzhgorod[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7957,7 +7957,7 @@ static const basic::ZoneEra kZoneEraEurope_Vienna[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7992,7 +7992,7 @@ static const basic::ZoneEra kZoneEraEurope_Warsaw[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8027,7 +8027,7 @@ static const basic::ZoneEra kZoneEraEurope_Zaporozhye[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8062,7 +8062,7 @@ static const basic::ZoneEra kZoneEraEurope_Zurich[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8097,7 +8097,7 @@ static const basic::ZoneEra kZoneEraHST[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8132,7 +8132,7 @@ static const basic::ZoneEra kZoneEraIndian_Chagos[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8167,7 +8167,7 @@ static const basic::ZoneEra kZoneEraIndian_Christmas[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8202,7 +8202,7 @@ static const basic::ZoneEra kZoneEraIndian_Cocos[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8237,7 +8237,7 @@ static const basic::ZoneEra kZoneEraIndian_Kerguelen[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8272,7 +8272,7 @@ static const basic::ZoneEra kZoneEraIndian_Mahe[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8307,7 +8307,7 @@ static const basic::ZoneEra kZoneEraIndian_Maldives[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8342,7 +8342,7 @@ static const basic::ZoneEra kZoneEraIndian_Mauritius[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8377,7 +8377,7 @@ static const basic::ZoneEra kZoneEraIndian_Reunion[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8412,7 +8412,7 @@ static const basic::ZoneEra kZoneEraMET[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8447,7 +8447,7 @@ static const basic::ZoneEra kZoneEraMST[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8482,7 +8482,7 @@ static const basic::ZoneEra kZoneEraMST7MDT[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8517,7 +8517,7 @@ static const basic::ZoneEra kZoneEraPST8PDT[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8552,7 +8552,7 @@ static const basic::ZoneEra kZoneEraPacific_Auckland[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8587,7 +8587,7 @@ static const basic::ZoneEra kZoneEraPacific_Chatham[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8622,7 +8622,7 @@ static const basic::ZoneEra kZoneEraPacific_Chuuk[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8657,7 +8657,7 @@ static const basic::ZoneEra kZoneEraPacific_Easter[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8692,7 +8692,7 @@ static const basic::ZoneEra kZoneEraPacific_Efate[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8727,7 +8727,7 @@ static const basic::ZoneEra kZoneEraPacific_Enderbury[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8762,7 +8762,7 @@ static const basic::ZoneEra kZoneEraPacific_Fiji[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8797,7 +8797,7 @@ static const basic::ZoneEra kZoneEraPacific_Funafuti[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8832,7 +8832,7 @@ static const basic::ZoneEra kZoneEraPacific_Galapagos[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8867,7 +8867,7 @@ static const basic::ZoneEra kZoneEraPacific_Gambier[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8902,7 +8902,7 @@ static const basic::ZoneEra kZoneEraPacific_Guadalcanal[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8937,7 +8937,7 @@ static const basic::ZoneEra kZoneEraPacific_Honolulu[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8972,7 +8972,7 @@ static const basic::ZoneEra kZoneEraPacific_Kiritimati[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9007,7 +9007,7 @@ static const basic::ZoneEra kZoneEraPacific_Kosrae[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 11:00 - +11 { @@ -9019,7 +9019,7 @@ static const basic::ZoneEra kZoneEraPacific_Kosrae[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9054,7 +9054,7 @@ static const basic::ZoneEra kZoneEraPacific_Kwajalein[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9089,7 +9089,7 @@ static const basic::ZoneEra kZoneEraPacific_Majuro[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9124,7 +9124,7 @@ static const basic::ZoneEra kZoneEraPacific_Marquesas[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9159,7 +9159,7 @@ static const basic::ZoneEra kZoneEraPacific_Nauru[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9194,7 +9194,7 @@ static const basic::ZoneEra kZoneEraPacific_Niue[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9229,7 +9229,7 @@ static const basic::ZoneEra kZoneEraPacific_Noumea[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9264,7 +9264,7 @@ static const basic::ZoneEra kZoneEraPacific_Pago_Pago[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9299,7 +9299,7 @@ static const basic::ZoneEra kZoneEraPacific_Palau[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9334,7 +9334,7 @@ static const basic::ZoneEra kZoneEraPacific_Pitcairn[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9369,7 +9369,7 @@ static const basic::ZoneEra kZoneEraPacific_Pohnpei[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9404,7 +9404,7 @@ static const basic::ZoneEra kZoneEraPacific_Port_Moresby[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9439,7 +9439,7 @@ static const basic::ZoneEra kZoneEraPacific_Rarotonga[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9474,7 +9474,7 @@ static const basic::ZoneEra kZoneEraPacific_Tahiti[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9509,7 +9509,7 @@ static const basic::ZoneEra kZoneEraPacific_Tarawa[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9544,7 +9544,7 @@ static const basic::ZoneEra kZoneEraPacific_Tongatapu[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 13:00 Tonga +13/+14 { @@ -9556,7 +9556,7 @@ static const basic::ZoneEra kZoneEraPacific_Tongatapu[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9591,7 +9591,7 @@ static const basic::ZoneEra kZoneEraPacific_Wake[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9626,7 +9626,7 @@ static const basic::ZoneEra kZoneEraPacific_Wallis[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9661,7 +9661,7 @@ static const basic::ZoneEra kZoneEraWET[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; diff --git a/tests/validation/BasicValidationUsingJavaTest/zonedb2018g/zone_policies.cpp b/tests/validation/BasicValidationUsingJavaTest/zonedb2018g/zone_policies.cpp index 3d728aa6a..a95b667cb 100644 --- a/tests/validation/BasicValidationUsingJavaTest/zonedb2018g/zone_policies.cpp +++ b/tests/validation/BasicValidationUsingJavaTest/zonedb2018g/zone_policies.cpp @@ -34,7 +34,7 @@ static const basic::ZoneRule kZoneRulesAN[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -46,7 +46,7 @@ static const basic::ZoneRule kZoneRulesAN[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -58,7 +58,7 @@ static const basic::ZoneRule kZoneRulesAN[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -70,7 +70,7 @@ static const basic::ZoneRule kZoneRulesAN[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -82,7 +82,7 @@ static const basic::ZoneRule kZoneRulesAN[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -94,7 +94,7 @@ static const basic::ZoneRule kZoneRulesAN[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -106,7 +106,7 @@ static const basic::ZoneRule kZoneRulesAN[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -118,7 +118,7 @@ static const basic::ZoneRule kZoneRulesAN[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -130,7 +130,7 @@ static const basic::ZoneRule kZoneRulesAN[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -162,7 +162,7 @@ static const basic::ZoneRule kZoneRulesAQ[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -194,7 +194,7 @@ static const basic::ZoneRule kZoneRulesAS[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -206,7 +206,7 @@ static const basic::ZoneRule kZoneRulesAS[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -218,7 +218,7 @@ static const basic::ZoneRule kZoneRulesAS[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -230,7 +230,7 @@ static const basic::ZoneRule kZoneRulesAS[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 2 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -242,7 +242,7 @@ static const basic::ZoneRule kZoneRulesAS[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -254,7 +254,7 @@ static const basic::ZoneRule kZoneRulesAS[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -266,7 +266,7 @@ static const basic::ZoneRule kZoneRulesAS[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -298,7 +298,7 @@ static const basic::ZoneRule kZoneRulesAT[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -310,7 +310,7 @@ static const basic::ZoneRule kZoneRulesAT[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -322,7 +322,7 @@ static const basic::ZoneRule kZoneRulesAT[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -334,7 +334,7 @@ static const basic::ZoneRule kZoneRulesAT[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -346,7 +346,7 @@ static const basic::ZoneRule kZoneRulesAT[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -358,7 +358,7 @@ static const basic::ZoneRule kZoneRulesAT[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -370,7 +370,7 @@ static const basic::ZoneRule kZoneRulesAT[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -382,7 +382,7 @@ static const basic::ZoneRule kZoneRulesAT[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -414,7 +414,7 @@ static const basic::ZoneRule kZoneRulesAV[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -426,7 +426,7 @@ static const basic::ZoneRule kZoneRulesAV[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -438,7 +438,7 @@ static const basic::ZoneRule kZoneRulesAV[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -450,7 +450,7 @@ static const basic::ZoneRule kZoneRulesAV[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -462,7 +462,7 @@ static const basic::ZoneRule kZoneRulesAV[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -474,7 +474,7 @@ static const basic::ZoneRule kZoneRulesAV[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -486,7 +486,7 @@ static const basic::ZoneRule kZoneRulesAV[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -498,7 +498,7 @@ static const basic::ZoneRule kZoneRulesAV[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -510,7 +510,7 @@ static const basic::ZoneRule kZoneRulesAV[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -542,7 +542,7 @@ static const basic::ZoneRule kZoneRulesAW[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -554,7 +554,7 @@ static const basic::ZoneRule kZoneRulesAW[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 3 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -566,7 +566,7 @@ static const basic::ZoneRule kZoneRulesAW[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -578,7 +578,7 @@ static const basic::ZoneRule kZoneRulesAW[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -610,7 +610,7 @@ static const basic::ZoneRule kZoneRulesArmenia[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -622,7 +622,7 @@ static const basic::ZoneRule kZoneRulesArmenia[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -634,7 +634,7 @@ static const basic::ZoneRule kZoneRulesArmenia[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -666,7 +666,7 @@ static const basic::ZoneRule kZoneRulesAus[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -698,7 +698,7 @@ static const basic::ZoneRule kZoneRulesAzer[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 16 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -710,7 +710,7 @@ static const basic::ZoneRule kZoneRulesAzer[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 20 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -742,7 +742,7 @@ static const basic::ZoneRule kZoneRulesBarb[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 25 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -774,7 +774,7 @@ static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 11 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -786,7 +786,7 @@ static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -798,7 +798,7 @@ static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 3 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -810,7 +810,7 @@ static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 27 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -822,7 +822,7 @@ static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -834,7 +834,7 @@ static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -846,7 +846,7 @@ static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 3 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -858,7 +858,7 @@ static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 19 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -870,7 +870,7 @@ static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 2 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -882,7 +882,7 @@ static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 16 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -894,7 +894,7 @@ static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 5 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -906,7 +906,7 @@ static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 25 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -918,7 +918,7 @@ static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -930,7 +930,7 @@ static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -942,7 +942,7 @@ static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -954,7 +954,7 @@ static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -966,7 +966,7 @@ static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -978,7 +978,7 @@ static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -990,7 +990,7 @@ static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1002,7 +1002,7 @@ static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -1014,7 +1014,7 @@ static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1026,7 +1026,7 @@ static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1038,7 +1038,7 @@ static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1050,7 +1050,7 @@ static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1062,7 +1062,7 @@ static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1074,7 +1074,7 @@ static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1086,7 +1086,7 @@ static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1098,7 +1098,7 @@ static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1130,7 +1130,7 @@ static const basic::ZoneRule kZoneRulesC_Eur[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1142,7 +1142,7 @@ static const basic::ZoneRule kZoneRulesC_Eur[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -1154,7 +1154,7 @@ static const basic::ZoneRule kZoneRulesC_Eur[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1186,7 +1186,7 @@ static const basic::ZoneRule kZoneRulesCO[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 4 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1218,7 +1218,7 @@ static const basic::ZoneRule kZoneRulesCR[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -1250,7 +1250,7 @@ static const basic::ZoneRule kZoneRulesCanada[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -1262,7 +1262,7 @@ static const basic::ZoneRule kZoneRulesCanada[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -1274,7 +1274,7 @@ static const basic::ZoneRule kZoneRulesCanada[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -1286,7 +1286,7 @@ static const basic::ZoneRule kZoneRulesCanada[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -1298,7 +1298,7 @@ static const basic::ZoneRule kZoneRulesCanada[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -1330,7 +1330,7 @@ static const basic::ZoneRule kZoneRulesChatham[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 11 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -1342,7 +1342,7 @@ static const basic::ZoneRule kZoneRulesChatham[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 11 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -1354,7 +1354,7 @@ static const basic::ZoneRule kZoneRulesChatham[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 11 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1366,7 +1366,7 @@ static const basic::ZoneRule kZoneRulesChatham[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 11 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -1378,7 +1378,7 @@ static const basic::ZoneRule kZoneRulesChatham[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 11 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1410,7 +1410,7 @@ static const basic::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 27 /*onDayOfMonth*/, 16 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -1422,7 +1422,7 @@ static const basic::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 4 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1434,7 +1434,7 @@ static const basic::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 9 /*onDayOfMonth*/, 16 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -1446,7 +1446,7 @@ static const basic::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 9 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1458,7 +1458,7 @@ static const basic::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 30 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1470,7 +1470,7 @@ static const basic::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 9 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1482,7 +1482,7 @@ static const basic::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1494,7 +1494,7 @@ static const basic::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 2 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1506,7 +1506,7 @@ static const basic::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 16 /*onDayOfMonth*/, 16 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -1518,7 +1518,7 @@ static const basic::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 23 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1530,7 +1530,7 @@ static const basic::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 2 /*onDayOfMonth*/, 16 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -1542,7 +1542,7 @@ static const basic::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 9 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1554,7 +1554,7 @@ static const basic::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 9 /*onDayOfMonth*/, 16 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -1566,7 +1566,7 @@ static const basic::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 2 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1578,7 +1578,7 @@ static const basic::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 2 /*onDayOfMonth*/, 16 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -1610,7 +1610,7 @@ static const basic::ZoneRule kZoneRulesCook[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1642,7 +1642,7 @@ static const basic::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 12 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -1654,7 +1654,7 @@ static const basic::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -1666,7 +1666,7 @@ static const basic::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -1678,7 +1678,7 @@ static const basic::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -1690,7 +1690,7 @@ static const basic::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -1702,7 +1702,7 @@ static const basic::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -1714,7 +1714,7 @@ static const basic::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -1726,7 +1726,7 @@ static const basic::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -1738,7 +1738,7 @@ static const basic::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -1750,7 +1750,7 @@ static const basic::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -1762,7 +1762,7 @@ static const basic::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 13 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -1774,7 +1774,7 @@ static const basic::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -1786,7 +1786,7 @@ static const basic::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -1798,7 +1798,7 @@ static const basic::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -1830,7 +1830,7 @@ static const basic::ZoneRule kZoneRulesDhaka[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1842,7 +1842,7 @@ static const basic::ZoneRule kZoneRulesDhaka[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 19 /*onDayOfMonth*/, 92 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -1854,7 +1854,7 @@ static const basic::ZoneRule kZoneRulesDhaka[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 31 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1886,7 +1886,7 @@ static const basic::ZoneRule kZoneRulesEU[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1898,7 +1898,7 @@ static const basic::ZoneRule kZoneRulesEU[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -1910,7 +1910,7 @@ static const basic::ZoneRule kZoneRulesEU[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1942,7 +1942,7 @@ static const basic::ZoneRule kZoneRulesEUAsia[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -1954,7 +1954,7 @@ static const basic::ZoneRule kZoneRulesEUAsia[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1966,7 +1966,7 @@ static const basic::ZoneRule kZoneRulesEUAsia[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1998,7 +1998,7 @@ static const basic::ZoneRule kZoneRulesEcuador[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 5 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2030,7 +2030,7 @@ static const basic::ZoneRule kZoneRulesEire[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2042,7 +2042,7 @@ static const basic::ZoneRule kZoneRulesEire[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, -4 /*deltaCode*/, '-' /*letter*/, }, @@ -2054,7 +2054,7 @@ static const basic::ZoneRule kZoneRulesEire[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, -4 /*deltaCode*/, '-' /*letter*/, }, @@ -2086,7 +2086,7 @@ static const basic::ZoneRule kZoneRulesFiji[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -2098,7 +2098,7 @@ static const basic::ZoneRule kZoneRulesFiji[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2110,7 +2110,7 @@ static const basic::ZoneRule kZoneRulesFiji[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 29 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -2122,7 +2122,7 @@ static const basic::ZoneRule kZoneRulesFiji[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2134,7 +2134,7 @@ static const basic::ZoneRule kZoneRulesFiji[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -2146,7 +2146,7 @@ static const basic::ZoneRule kZoneRulesFiji[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2158,7 +2158,7 @@ static const basic::ZoneRule kZoneRulesFiji[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 18 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2170,7 +2170,7 @@ static const basic::ZoneRule kZoneRulesFiji[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 18 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2182,7 +2182,7 @@ static const basic::ZoneRule kZoneRulesFiji[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -2194,7 +2194,7 @@ static const basic::ZoneRule kZoneRulesFiji[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 13 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2226,7 +2226,7 @@ static const basic::ZoneRule kZoneRulesGhana[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 31 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2258,7 +2258,7 @@ static const basic::ZoneRule kZoneRulesGuat[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 7 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -2270,7 +2270,7 @@ static const basic::ZoneRule kZoneRulesGuat[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 30 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -2282,7 +2282,7 @@ static const basic::ZoneRule kZoneRulesGuat[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -2314,7 +2314,7 @@ static const basic::ZoneRule kZoneRulesHK[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 16 /*onDayOfMonth*/, 14 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2346,7 +2346,7 @@ static const basic::ZoneRule kZoneRulesHaiti[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -2358,7 +2358,7 @@ static const basic::ZoneRule kZoneRulesHaiti[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -2370,7 +2370,7 @@ static const basic::ZoneRule kZoneRulesHaiti[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -2382,7 +2382,7 @@ static const basic::ZoneRule kZoneRulesHaiti[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -2394,7 +2394,7 @@ static const basic::ZoneRule kZoneRulesHaiti[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -2406,7 +2406,7 @@ static const basic::ZoneRule kZoneRulesHaiti[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -2418,7 +2418,7 @@ static const basic::ZoneRule kZoneRulesHaiti[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -2450,7 +2450,7 @@ static const basic::ZoneRule kZoneRulesHoliday[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -2482,7 +2482,7 @@ static const basic::ZoneRule kZoneRulesHond[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -2494,7 +2494,7 @@ static const basic::ZoneRule kZoneRulesHond[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -2506,7 +2506,7 @@ static const basic::ZoneRule kZoneRulesHond[] ACE_TIME_PROGMEM = { 1 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -2538,7 +2538,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2550,7 +2550,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -2562,7 +2562,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2574,7 +2574,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -2586,7 +2586,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2598,7 +2598,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -2610,7 +2610,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2622,7 +2622,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -2634,7 +2634,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2646,7 +2646,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -2658,7 +2658,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2670,7 +2670,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -2682,7 +2682,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2694,7 +2694,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -2706,7 +2706,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2718,7 +2718,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -2730,7 +2730,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2742,7 +2742,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -2754,7 +2754,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2766,7 +2766,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -2778,7 +2778,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2790,7 +2790,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -2802,7 +2802,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2814,7 +2814,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -2826,7 +2826,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2838,7 +2838,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -2850,7 +2850,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2862,7 +2862,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -2874,7 +2874,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2886,7 +2886,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -2898,7 +2898,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2910,7 +2910,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -2922,7 +2922,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2934,7 +2934,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -2946,7 +2946,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2958,7 +2958,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -2970,7 +2970,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2982,7 +2982,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -2994,7 +2994,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3006,7 +3006,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3018,7 +3018,7 @@ static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3050,7 +3050,7 @@ static const basic::ZoneRule kZoneRulesIraq[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3062,7 +3062,7 @@ static const basic::ZoneRule kZoneRulesIraq[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3074,7 +3074,7 @@ static const basic::ZoneRule kZoneRulesIraq[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3106,7 +3106,7 @@ static const basic::ZoneRule kZoneRulesJapan[] ACE_TIME_PROGMEM = { 6 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 100 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -3138,7 +3138,7 @@ static const basic::ZoneRule kZoneRulesJordan[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3150,7 +3150,7 @@ static const basic::ZoneRule kZoneRulesJordan[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -3162,7 +3162,7 @@ static const basic::ZoneRule kZoneRulesJordan[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3174,7 +3174,7 @@ static const basic::ZoneRule kZoneRulesJordan[] ACE_TIME_PROGMEM = { 4 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -3186,7 +3186,7 @@ static const basic::ZoneRule kZoneRulesJordan[] ACE_TIME_PROGMEM = { 4 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -3198,7 +3198,7 @@ static const basic::ZoneRule kZoneRulesJordan[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 24 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3210,7 +3210,7 @@ static const basic::ZoneRule kZoneRulesJordan[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3222,7 +3222,7 @@ static const basic::ZoneRule kZoneRulesJordan[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3234,7 +3234,7 @@ static const basic::ZoneRule kZoneRulesJordan[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3246,7 +3246,7 @@ static const basic::ZoneRule kZoneRulesJordan[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3258,7 +3258,7 @@ static const basic::ZoneRule kZoneRulesJordan[] ACE_TIME_PROGMEM = { 4 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -3270,7 +3270,7 @@ static const basic::ZoneRule kZoneRulesJordan[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3302,7 +3302,7 @@ static const basic::ZoneRule kZoneRulesLH[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 2 /*deltaCode*/, '-' /*letter*/, }, @@ -3314,7 +3314,7 @@ static const basic::ZoneRule kZoneRulesLH[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3326,7 +3326,7 @@ static const basic::ZoneRule kZoneRulesLH[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3338,7 +3338,7 @@ static const basic::ZoneRule kZoneRulesLH[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 2 /*deltaCode*/, '-' /*letter*/, }, @@ -3350,7 +3350,7 @@ static const basic::ZoneRule kZoneRulesLH[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 2 /*deltaCode*/, '-' /*letter*/, }, @@ -3362,7 +3362,7 @@ static const basic::ZoneRule kZoneRulesLH[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3374,7 +3374,7 @@ static const basic::ZoneRule kZoneRulesLH[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3386,7 +3386,7 @@ static const basic::ZoneRule kZoneRulesLH[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3398,7 +3398,7 @@ static const basic::ZoneRule kZoneRulesLH[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 2 /*deltaCode*/, '-' /*letter*/, }, @@ -3430,7 +3430,7 @@ static const basic::ZoneRule kZoneRulesLebanon[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -3442,7 +3442,7 @@ static const basic::ZoneRule kZoneRulesLebanon[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3454,7 +3454,7 @@ static const basic::ZoneRule kZoneRulesLebanon[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3486,7 +3486,7 @@ static const basic::ZoneRule kZoneRulesMacau[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 16 /*onDayOfMonth*/, 14 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -3518,7 +3518,7 @@ static const basic::ZoneRule kZoneRulesMauritius[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3530,7 +3530,7 @@ static const basic::ZoneRule kZoneRulesMauritius[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3542,7 +3542,7 @@ static const basic::ZoneRule kZoneRulesMauritius[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3574,7 +3574,7 @@ static const basic::ZoneRule kZoneRulesMexico[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 30 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -3586,7 +3586,7 @@ static const basic::ZoneRule kZoneRulesMexico[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -3598,7 +3598,7 @@ static const basic::ZoneRule kZoneRulesMexico[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -3610,7 +3610,7 @@ static const basic::ZoneRule kZoneRulesMexico[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -3622,7 +3622,7 @@ static const basic::ZoneRule kZoneRulesMexico[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -3634,7 +3634,7 @@ static const basic::ZoneRule kZoneRulesMexico[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -3646,7 +3646,7 @@ static const basic::ZoneRule kZoneRulesMexico[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -3678,7 +3678,7 @@ static const basic::ZoneRule kZoneRulesMoldova[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -3690,7 +3690,7 @@ static const basic::ZoneRule kZoneRulesMoldova[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3722,7 +3722,7 @@ static const basic::ZoneRule kZoneRulesMoncton[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -3734,7 +3734,7 @@ static const basic::ZoneRule kZoneRulesMoncton[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -3746,7 +3746,7 @@ static const basic::ZoneRule kZoneRulesMoncton[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -3778,7 +3778,7 @@ static const basic::ZoneRule kZoneRulesMongol[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3790,7 +3790,7 @@ static const basic::ZoneRule kZoneRulesMongol[] ACE_TIME_PROGMEM = { 6 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3802,7 +3802,7 @@ static const basic::ZoneRule kZoneRulesMongol[] ACE_TIME_PROGMEM = { 6 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3814,7 +3814,7 @@ static const basic::ZoneRule kZoneRulesMongol[] ACE_TIME_PROGMEM = { 6 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3826,7 +3826,7 @@ static const basic::ZoneRule kZoneRulesMongol[] ACE_TIME_PROGMEM = { 6 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3838,7 +3838,7 @@ static const basic::ZoneRule kZoneRulesMongol[] ACE_TIME_PROGMEM = { 6 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3870,7 +3870,7 @@ static const basic::ZoneRule kZoneRulesNC[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 2 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3902,7 +3902,7 @@ static const basic::ZoneRule kZoneRulesNZ[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -3914,7 +3914,7 @@ static const basic::ZoneRule kZoneRulesNZ[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -3926,7 +3926,7 @@ static const basic::ZoneRule kZoneRulesNZ[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -3938,7 +3938,7 @@ static const basic::ZoneRule kZoneRulesNZ[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -3950,7 +3950,7 @@ static const basic::ZoneRule kZoneRulesNZ[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -3982,7 +3982,7 @@ static const basic::ZoneRule kZoneRulesNic[] ACE_TIME_PROGMEM = { 1 /*onDayOfWeek*/, 23 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -3994,7 +3994,7 @@ static const basic::ZoneRule kZoneRulesNic[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 10 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -4006,7 +4006,7 @@ static const basic::ZoneRule kZoneRulesNic[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -4018,7 +4018,7 @@ static const basic::ZoneRule kZoneRulesNic[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 30 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -4030,7 +4030,7 @@ static const basic::ZoneRule kZoneRulesNic[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -4062,7 +4062,7 @@ static const basic::ZoneRule kZoneRulesPRC[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 11 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -4094,7 +4094,7 @@ static const basic::ZoneRule kZoneRulesPakistan[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4106,7 +4106,7 @@ static const basic::ZoneRule kZoneRulesPakistan[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 2 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -4118,7 +4118,7 @@ static const basic::ZoneRule kZoneRulesPakistan[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 2 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4130,7 +4130,7 @@ static const basic::ZoneRule kZoneRulesPakistan[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -4142,7 +4142,7 @@ static const basic::ZoneRule kZoneRulesPakistan[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4154,7 +4154,7 @@ static const basic::ZoneRule kZoneRulesPakistan[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -4186,7 +4186,7 @@ static const basic::ZoneRule kZoneRulesPara[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -4198,7 +4198,7 @@ static const basic::ZoneRule kZoneRulesPara[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4210,7 +4210,7 @@ static const basic::ZoneRule kZoneRulesPara[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4222,7 +4222,7 @@ static const basic::ZoneRule kZoneRulesPara[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4234,7 +4234,7 @@ static const basic::ZoneRule kZoneRulesPara[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -4246,7 +4246,7 @@ static const basic::ZoneRule kZoneRulesPara[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -4258,7 +4258,7 @@ static const basic::ZoneRule kZoneRulesPara[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4270,7 +4270,7 @@ static const basic::ZoneRule kZoneRulesPara[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -4282,7 +4282,7 @@ static const basic::ZoneRule kZoneRulesPara[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4294,7 +4294,7 @@ static const basic::ZoneRule kZoneRulesPara[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4326,7 +4326,7 @@ static const basic::ZoneRule kZoneRulesPeru[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4358,7 +4358,7 @@ static const basic::ZoneRule kZoneRulesPhil[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -4390,7 +4390,7 @@ static const basic::ZoneRule kZoneRulesROK[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -4422,7 +4422,7 @@ static const basic::ZoneRule kZoneRulesRussiaAsia[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4434,7 +4434,7 @@ static const basic::ZoneRule kZoneRulesRussiaAsia[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -4446,7 +4446,7 @@ static const basic::ZoneRule kZoneRulesRussiaAsia[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4478,7 +4478,7 @@ static const basic::ZoneRule kZoneRulesSA[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4510,7 +4510,7 @@ static const basic::ZoneRule kZoneRulesSalv[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -4542,7 +4542,7 @@ static const basic::ZoneRule kZoneRulesSyria[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4554,7 +4554,7 @@ static const basic::ZoneRule kZoneRulesSyria[] ACE_TIME_PROGMEM = { 1 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -4566,7 +4566,7 @@ static const basic::ZoneRule kZoneRulesSyria[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -4578,7 +4578,7 @@ static const basic::ZoneRule kZoneRulesSyria[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4590,7 +4590,7 @@ static const basic::ZoneRule kZoneRulesSyria[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -4602,7 +4602,7 @@ static const basic::ZoneRule kZoneRulesSyria[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4614,7 +4614,7 @@ static const basic::ZoneRule kZoneRulesSyria[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -4626,7 +4626,7 @@ static const basic::ZoneRule kZoneRulesSyria[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4638,7 +4638,7 @@ static const basic::ZoneRule kZoneRulesSyria[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -4650,7 +4650,7 @@ static const basic::ZoneRule kZoneRulesSyria[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -4662,7 +4662,7 @@ static const basic::ZoneRule kZoneRulesSyria[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -4674,7 +4674,7 @@ static const basic::ZoneRule kZoneRulesSyria[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4706,7 +4706,7 @@ static const basic::ZoneRule kZoneRulesTaiwan[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -4738,7 +4738,7 @@ static const basic::ZoneRule kZoneRulesThule[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -4750,7 +4750,7 @@ static const basic::ZoneRule kZoneRulesThule[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -4762,7 +4762,7 @@ static const basic::ZoneRule kZoneRulesThule[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -4774,7 +4774,7 @@ static const basic::ZoneRule kZoneRulesThule[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -4786,7 +4786,7 @@ static const basic::ZoneRule kZoneRulesThule[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -4818,7 +4818,7 @@ static const basic::ZoneRule kZoneRulesTonga[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4830,7 +4830,7 @@ static const basic::ZoneRule kZoneRulesTonga[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 7 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -4842,7 +4842,7 @@ static const basic::ZoneRule kZoneRulesTonga[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 19 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4854,7 +4854,7 @@ static const basic::ZoneRule kZoneRulesTonga[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -4866,7 +4866,7 @@ static const basic::ZoneRule kZoneRulesTonga[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4878,7 +4878,7 @@ static const basic::ZoneRule kZoneRulesTonga[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -4890,7 +4890,7 @@ static const basic::ZoneRule kZoneRulesTonga[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4922,7 +4922,7 @@ static const basic::ZoneRule kZoneRulesTunisia[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4934,7 +4934,7 @@ static const basic::ZoneRule kZoneRulesTunisia[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -4946,7 +4946,7 @@ static const basic::ZoneRule kZoneRulesTunisia[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 30 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4958,7 +4958,7 @@ static const basic::ZoneRule kZoneRulesTunisia[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -4970,7 +4970,7 @@ static const basic::ZoneRule kZoneRulesTunisia[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5002,7 +5002,7 @@ static const basic::ZoneRule kZoneRulesUS[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -5014,7 +5014,7 @@ static const basic::ZoneRule kZoneRulesUS[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -5026,7 +5026,7 @@ static const basic::ZoneRule kZoneRulesUS[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -5038,7 +5038,7 @@ static const basic::ZoneRule kZoneRulesUS[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -5050,7 +5050,7 @@ static const basic::ZoneRule kZoneRulesUS[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -5082,7 +5082,7 @@ static const basic::ZoneRule kZoneRulesUruguay[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 28 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5094,7 +5094,7 @@ static const basic::ZoneRule kZoneRulesUruguay[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 19 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -5106,7 +5106,7 @@ static const basic::ZoneRule kZoneRulesUruguay[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 27 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5118,7 +5118,7 @@ static const basic::ZoneRule kZoneRulesUruguay[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 9 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -5130,7 +5130,7 @@ static const basic::ZoneRule kZoneRulesUruguay[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5142,7 +5142,7 @@ static const basic::ZoneRule kZoneRulesUruguay[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -5174,7 +5174,7 @@ static const basic::ZoneRule kZoneRulesVanuatu[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 23 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5206,7 +5206,7 @@ static const basic::ZoneRule kZoneRulesWinn[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -5218,7 +5218,7 @@ static const basic::ZoneRule kZoneRulesWinn[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -5230,7 +5230,7 @@ static const basic::ZoneRule kZoneRulesWinn[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -5262,7 +5262,7 @@ static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 6 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -5274,7 +5274,7 @@ static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 2 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -5286,7 +5286,7 @@ static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 3 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -5298,7 +5298,7 @@ static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 14 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -5310,7 +5310,7 @@ static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 6 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -5322,7 +5322,7 @@ static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 9 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -5334,7 +5334,7 @@ static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 24 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -5346,7 +5346,7 @@ static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 29 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -5358,7 +5358,7 @@ static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 7 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -5370,7 +5370,7 @@ static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 28 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -5382,7 +5382,7 @@ static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 3 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -5394,7 +5394,7 @@ static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 7 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -5406,7 +5406,7 @@ static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -5418,7 +5418,7 @@ static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -5430,7 +5430,7 @@ static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 9 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -5442,7 +5442,7 @@ static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 26 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -5454,7 +5454,7 @@ static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -5466,7 +5466,7 @@ static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 16 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -5478,7 +5478,7 @@ static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 5 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -5490,7 +5490,7 @@ static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 27 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -5502,7 +5502,7 @@ static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 12 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -5514,7 +5514,7 @@ static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -5526,7 +5526,7 @@ static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 2 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -5538,7 +5538,7 @@ static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 26 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -5550,7 +5550,7 @@ static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 23 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -5562,7 +5562,7 @@ static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 23 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -5574,7 +5574,7 @@ static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, diff --git a/tests/validation/ExtendedValidationUsingJavaTest/zonedbx2018g/zone_infos.cpp b/tests/validation/ExtendedValidationUsingJavaTest/zonedbx2018g/zone_infos.cpp index 5fc11b801..1099de77f 100644 --- a/tests/validation/ExtendedValidationUsingJavaTest/zonedbx2018g/zone_infos.cpp +++ b/tests/validation/ExtendedValidationUsingJavaTest/zonedbx2018g/zone_infos.cpp @@ -55,7 +55,7 @@ static const extended::ZoneEra kZoneEraAfrica_Abidjan[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -90,7 +90,7 @@ static const extended::ZoneEra kZoneEraAfrica_Accra[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -125,7 +125,7 @@ static const extended::ZoneEra kZoneEraAfrica_Algiers[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -160,7 +160,7 @@ static const extended::ZoneEra kZoneEraAfrica_Bissau[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -195,7 +195,7 @@ static const extended::ZoneEra kZoneEraAfrica_Cairo[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -230,7 +230,7 @@ static const extended::ZoneEra kZoneEraAfrica_Casablanca[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 27 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 1:00 - +01 { @@ -242,7 +242,7 @@ static const extended::ZoneEra kZoneEraAfrica_Casablanca[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -277,7 +277,7 @@ static const extended::ZoneEra kZoneEraAfrica_Ceuta[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -312,7 +312,7 @@ static const extended::ZoneEra kZoneEraAfrica_El_Aaiun[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 27 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 1:00 - +01 { @@ -324,7 +324,7 @@ static const extended::ZoneEra kZoneEraAfrica_El_Aaiun[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -359,7 +359,7 @@ static const extended::ZoneEra kZoneEraAfrica_Johannesburg[] ACE_TIME_PROGMEM = 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -394,7 +394,7 @@ static const extended::ZoneEra kZoneEraAfrica_Juba[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 15 /*untilDay*/, 48 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 3:00 - EAT { @@ -406,7 +406,7 @@ static const extended::ZoneEra kZoneEraAfrica_Juba[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -441,7 +441,7 @@ static const extended::ZoneEra kZoneEraAfrica_Khartoum[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 15 /*untilDay*/, 48 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 3:00 - EAT 2017 Nov 1 { @@ -453,7 +453,7 @@ static const extended::ZoneEra kZoneEraAfrica_Khartoum[] ACE_TIME_PROGMEM = { 11 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 2:00 - CAT { @@ -465,7 +465,7 @@ static const extended::ZoneEra kZoneEraAfrica_Khartoum[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -500,7 +500,7 @@ static const extended::ZoneEra kZoneEraAfrica_Lagos[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -535,7 +535,7 @@ static const extended::ZoneEra kZoneEraAfrica_Maputo[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -570,7 +570,7 @@ static const extended::ZoneEra kZoneEraAfrica_Monrovia[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -605,7 +605,7 @@ static const extended::ZoneEra kZoneEraAfrica_Nairobi[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -640,7 +640,7 @@ static const extended::ZoneEra kZoneEraAfrica_Ndjamena[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -675,7 +675,7 @@ static const extended::ZoneEra kZoneEraAfrica_Sao_Tome[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 4 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 1:00 - WAT { @@ -687,7 +687,7 @@ static const extended::ZoneEra kZoneEraAfrica_Sao_Tome[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -722,7 +722,7 @@ static const extended::ZoneEra kZoneEraAfrica_Tripoli[] ACE_TIME_PROGMEM = { 11 /*untilMonth*/, 10 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 1:00 Libya CE%sT 2013 Oct 25 2:00 { @@ -734,7 +734,7 @@ static const extended::ZoneEra kZoneEraAfrica_Tripoli[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 25 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 2:00 - EET { @@ -746,7 +746,7 @@ static const extended::ZoneEra kZoneEraAfrica_Tripoli[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -781,7 +781,7 @@ static const extended::ZoneEra kZoneEraAfrica_Tunis[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -816,7 +816,7 @@ static const extended::ZoneEra kZoneEraAfrica_Windhoek[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -851,7 +851,7 @@ static const extended::ZoneEra kZoneEraAmerica_Adak[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -886,7 +886,7 @@ static const extended::ZoneEra kZoneEraAmerica_Anchorage[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -921,7 +921,7 @@ static const extended::ZoneEra kZoneEraAmerica_Araguaina[] ACE_TIME_PROGMEM = { 9 /*untilMonth*/, 24 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 - -03 2012 Oct 21 { @@ -933,7 +933,7 @@ static const extended::ZoneEra kZoneEraAmerica_Araguaina[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 21 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 Brazil -03/-02 2013 Sep { @@ -945,7 +945,7 @@ static const extended::ZoneEra kZoneEraAmerica_Araguaina[] ACE_TIME_PROGMEM = { 9 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 - -03 { @@ -957,7 +957,7 @@ static const extended::ZoneEra kZoneEraAmerica_Araguaina[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -992,7 +992,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Buenos_Aires[] ACE_TIME 10 /*untilMonth*/, 3 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 Arg -04/-03 2000 Mar 3 { @@ -1004,7 +1004,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Buenos_Aires[] ACE_TIME 3 /*untilMonth*/, 3 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 Arg -03/-02 { @@ -1016,7 +1016,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Buenos_Aires[] ACE_TIME 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1051,7 +1051,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Catamarca[] ACE_TIME_PR 10 /*untilMonth*/, 3 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 Arg -04/-03 2000 Mar 3 { @@ -1063,7 +1063,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Catamarca[] ACE_TIME_PR 3 /*untilMonth*/, 3 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 - -03 2004 Jun 1 { @@ -1075,7 +1075,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Catamarca[] ACE_TIME_PR 6 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 - -04 2004 Jun 20 { @@ -1087,7 +1087,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Catamarca[] ACE_TIME_PR 6 /*untilMonth*/, 20 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 Arg -03/-02 2008 Oct 18 { @@ -1099,7 +1099,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Catamarca[] ACE_TIME_PR 10 /*untilMonth*/, 18 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 - -03 { @@ -1111,7 +1111,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Catamarca[] ACE_TIME_PR 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1146,7 +1146,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Cordoba[] ACE_TIME_PROG 10 /*untilMonth*/, 3 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 Arg -04/-03 2000 Mar 3 { @@ -1158,7 +1158,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Cordoba[] ACE_TIME_PROG 3 /*untilMonth*/, 3 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 Arg -03/-02 { @@ -1170,7 +1170,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Cordoba[] ACE_TIME_PROG 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1205,7 +1205,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Jujuy[] ACE_TIME_PROGME 10 /*untilMonth*/, 3 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 Arg -04/-03 2000 Mar 3 { @@ -1217,7 +1217,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Jujuy[] ACE_TIME_PROGME 3 /*untilMonth*/, 3 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 Arg -03/-02 2008 Oct 18 { @@ -1229,7 +1229,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Jujuy[] ACE_TIME_PROGME 10 /*untilMonth*/, 18 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 - -03 { @@ -1241,7 +1241,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Jujuy[] ACE_TIME_PROGME 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1276,7 +1276,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_La_Rioja[] ACE_TIME_PRO 10 /*untilMonth*/, 3 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 Arg -04/-03 2000 Mar 3 { @@ -1288,7 +1288,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_La_Rioja[] ACE_TIME_PRO 3 /*untilMonth*/, 3 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 - -03 2004 Jun 1 { @@ -1300,7 +1300,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_La_Rioja[] ACE_TIME_PRO 6 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 - -04 2004 Jun 20 { @@ -1312,7 +1312,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_La_Rioja[] ACE_TIME_PRO 6 /*untilMonth*/, 20 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 Arg -03/-02 2008 Oct 18 { @@ -1324,7 +1324,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_La_Rioja[] ACE_TIME_PRO 10 /*untilMonth*/, 18 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 - -03 { @@ -1336,7 +1336,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_La_Rioja[] ACE_TIME_PRO 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1371,7 +1371,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Mendoza[] ACE_TIME_PROG 10 /*untilMonth*/, 3 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 Arg -04/-03 2000 Mar 3 { @@ -1383,7 +1383,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Mendoza[] ACE_TIME_PROG 3 /*untilMonth*/, 3 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 - -03 2004 May 23 { @@ -1395,7 +1395,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Mendoza[] ACE_TIME_PROG 5 /*untilMonth*/, 23 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 - -04 2004 Sep 26 { @@ -1407,7 +1407,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Mendoza[] ACE_TIME_PROG 9 /*untilMonth*/, 26 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 Arg -03/-02 2008 Oct 18 { @@ -1419,7 +1419,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Mendoza[] ACE_TIME_PROG 10 /*untilMonth*/, 18 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 - -03 { @@ -1431,7 +1431,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Mendoza[] ACE_TIME_PROG 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1466,7 +1466,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Rio_Gallegos[] ACE_TIME 10 /*untilMonth*/, 3 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 Arg -04/-03 2000 Mar 3 { @@ -1478,7 +1478,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Rio_Gallegos[] ACE_TIME 3 /*untilMonth*/, 3 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 - -03 2004 Jun 1 { @@ -1490,7 +1490,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Rio_Gallegos[] ACE_TIME 6 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 - -04 2004 Jun 20 { @@ -1502,7 +1502,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Rio_Gallegos[] ACE_TIME 6 /*untilMonth*/, 20 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 Arg -03/-02 2008 Oct 18 { @@ -1514,7 +1514,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Rio_Gallegos[] ACE_TIME 10 /*untilMonth*/, 18 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 - -03 { @@ -1526,7 +1526,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Rio_Gallegos[] ACE_TIME 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1561,7 +1561,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Salta[] ACE_TIME_PROGME 10 /*untilMonth*/, 3 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 Arg -04/-03 2000 Mar 3 { @@ -1573,7 +1573,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Salta[] ACE_TIME_PROGME 3 /*untilMonth*/, 3 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 Arg -03/-02 2008 Oct 18 { @@ -1585,7 +1585,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Salta[] ACE_TIME_PROGME 10 /*untilMonth*/, 18 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 - -03 { @@ -1597,7 +1597,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Salta[] ACE_TIME_PROGME 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1632,7 +1632,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_San_Juan[] ACE_TIME_PRO 10 /*untilMonth*/, 3 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 Arg -04/-03 2000 Mar 3 { @@ -1644,7 +1644,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_San_Juan[] ACE_TIME_PRO 3 /*untilMonth*/, 3 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 - -03 2004 May 31 { @@ -1656,7 +1656,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_San_Juan[] ACE_TIME_PRO 5 /*untilMonth*/, 31 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 - -04 2004 Jul 25 { @@ -1668,7 +1668,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_San_Juan[] ACE_TIME_PRO 7 /*untilMonth*/, 25 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 Arg -03/-02 2008 Oct 18 { @@ -1680,7 +1680,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_San_Juan[] ACE_TIME_PRO 10 /*untilMonth*/, 18 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 - -03 { @@ -1692,7 +1692,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_San_Juan[] ACE_TIME_PRO 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1727,7 +1727,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_San_Luis[] ACE_TIME_PRO 10 /*untilMonth*/, 3 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 1:00 -03 2000 Mar 3 { @@ -1739,7 +1739,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_San_Luis[] ACE_TIME_PRO 3 /*untilMonth*/, 3 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 - -03 2004 May 31 { @@ -1751,7 +1751,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_San_Luis[] ACE_TIME_PRO 5 /*untilMonth*/, 31 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 - -04 2004 Jul 25 { @@ -1763,7 +1763,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_San_Luis[] ACE_TIME_PRO 7 /*untilMonth*/, 25 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 Arg -03/-02 2008 Jan 21 { @@ -1775,7 +1775,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_San_Luis[] ACE_TIME_PRO 1 /*untilMonth*/, 21 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 SanLuis -04/-03 2009 Oct 11 { @@ -1787,7 +1787,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_San_Luis[] ACE_TIME_PRO 10 /*untilMonth*/, 11 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 - -03 { @@ -1799,7 +1799,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_San_Luis[] ACE_TIME_PRO 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1834,7 +1834,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Tucuman[] ACE_TIME_PROG 10 /*untilMonth*/, 3 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 Arg -04/-03 2000 Mar 3 { @@ -1846,7 +1846,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Tucuman[] ACE_TIME_PROG 3 /*untilMonth*/, 3 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 - -03 2004 Jun 1 { @@ -1858,7 +1858,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Tucuman[] ACE_TIME_PROG 6 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 - -04 2004 Jun 13 { @@ -1870,7 +1870,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Tucuman[] ACE_TIME_PROG 6 /*untilMonth*/, 13 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 Arg -03/-02 { @@ -1882,7 +1882,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Tucuman[] ACE_TIME_PROG 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -1917,7 +1917,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Ushuaia[] ACE_TIME_PROG 10 /*untilMonth*/, 3 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 Arg -04/-03 2000 Mar 3 { @@ -1929,7 +1929,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Ushuaia[] ACE_TIME_PROG 3 /*untilMonth*/, 3 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 - -03 2004 May 30 { @@ -1941,7 +1941,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Ushuaia[] ACE_TIME_PROG 5 /*untilMonth*/, 30 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 - -04 2004 Jun 20 { @@ -1953,7 +1953,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Ushuaia[] ACE_TIME_PROG 6 /*untilMonth*/, 20 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 Arg -03/-02 2008 Oct 18 { @@ -1965,7 +1965,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Ushuaia[] ACE_TIME_PROG 10 /*untilMonth*/, 18 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 - -03 { @@ -1977,7 +1977,7 @@ static const extended::ZoneEra kZoneEraAmerica_Argentina_Ushuaia[] ACE_TIME_PROG 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2012,7 +2012,7 @@ static const extended::ZoneEra kZoneEraAmerica_Asuncion[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2047,7 +2047,7 @@ static const extended::ZoneEra kZoneEraAmerica_Atikokan[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2082,7 +2082,7 @@ static const extended::ZoneEra kZoneEraAmerica_Bahia[] ACE_TIME_PROGMEM = { 9 /*untilMonth*/, 24 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 - -03 2011 Oct 16 { @@ -2094,7 +2094,7 @@ static const extended::ZoneEra kZoneEraAmerica_Bahia[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 16 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 Brazil -03/-02 2012 Oct 21 { @@ -2106,7 +2106,7 @@ static const extended::ZoneEra kZoneEraAmerica_Bahia[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 21 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 - -03 { @@ -2118,7 +2118,7 @@ static const extended::ZoneEra kZoneEraAmerica_Bahia[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2153,7 +2153,7 @@ static const extended::ZoneEra kZoneEraAmerica_Bahia_Banderas[] ACE_TIME_PROGMEM 4 /*untilMonth*/, 4 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -6:00 Mexico C%sT { @@ -2165,7 +2165,7 @@ static const extended::ZoneEra kZoneEraAmerica_Bahia_Banderas[] ACE_TIME_PROGMEM 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2200,7 +2200,7 @@ static const extended::ZoneEra kZoneEraAmerica_Barbados[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2235,7 +2235,7 @@ static const extended::ZoneEra kZoneEraAmerica_Belem[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2270,7 +2270,7 @@ static const extended::ZoneEra kZoneEraAmerica_Belize[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2305,7 +2305,7 @@ static const extended::ZoneEra kZoneEraAmerica_Blanc_Sablon[] ACE_TIME_PROGMEM = 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2340,7 +2340,7 @@ static const extended::ZoneEra kZoneEraAmerica_Boa_Vista[] ACE_TIME_PROGMEM = { 9 /*untilMonth*/, 30 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 Brazil -04/-03 2000 Oct 15 { @@ -2352,7 +2352,7 @@ static const extended::ZoneEra kZoneEraAmerica_Boa_Vista[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 15 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 - -04 { @@ -2364,7 +2364,7 @@ static const extended::ZoneEra kZoneEraAmerica_Boa_Vista[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2399,7 +2399,7 @@ static const extended::ZoneEra kZoneEraAmerica_Bogota[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2434,7 +2434,7 @@ static const extended::ZoneEra kZoneEraAmerica_Boise[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2469,7 +2469,7 @@ static const extended::ZoneEra kZoneEraAmerica_Cambridge_Bay[] ACE_TIME_PROGMEM 10 /*untilMonth*/, 31 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -6:00 Canada C%sT 2000 Oct 29 2:00 { @@ -2481,7 +2481,7 @@ static const extended::ZoneEra kZoneEraAmerica_Cambridge_Bay[] ACE_TIME_PROGMEM 10 /*untilMonth*/, 29 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -5:00 - EST 2000 Nov 5 0:00 { @@ -2493,7 +2493,7 @@ static const extended::ZoneEra kZoneEraAmerica_Cambridge_Bay[] ACE_TIME_PROGMEM 11 /*untilMonth*/, 5 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -6:00 - CST 2001 Apr 1 3:00 { @@ -2505,7 +2505,7 @@ static const extended::ZoneEra kZoneEraAmerica_Cambridge_Bay[] ACE_TIME_PROGMEM 4 /*untilMonth*/, 1 /*untilDay*/, 12 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -7:00 Canada M%sT { @@ -2517,7 +2517,7 @@ static const extended::ZoneEra kZoneEraAmerica_Cambridge_Bay[] ACE_TIME_PROGMEM 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2552,7 +2552,7 @@ static const extended::ZoneEra kZoneEraAmerica_Campo_Grande[] ACE_TIME_PROGMEM = 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2587,7 +2587,7 @@ static const extended::ZoneEra kZoneEraAmerica_Cancun[] ACE_TIME_PROGMEM = { 2 /*untilMonth*/, 1 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -5:00 - EST { @@ -2599,7 +2599,7 @@ static const extended::ZoneEra kZoneEraAmerica_Cancun[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2634,7 +2634,7 @@ static const extended::ZoneEra kZoneEraAmerica_Caracas[] ACE_TIME_PROGMEM = { 12 /*untilMonth*/, 9 /*untilDay*/, 12 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:30 - -0430 2016 May 1 2:30 { @@ -2646,7 +2646,7 @@ static const extended::ZoneEra kZoneEraAmerica_Caracas[] ACE_TIME_PROGMEM = { 5 /*untilMonth*/, 1 /*untilDay*/, 10 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 - -04 { @@ -2658,7 +2658,7 @@ static const extended::ZoneEra kZoneEraAmerica_Caracas[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2693,7 +2693,7 @@ static const extended::ZoneEra kZoneEraAmerica_Cayenne[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2728,7 +2728,7 @@ static const extended::ZoneEra kZoneEraAmerica_Chicago[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2763,7 +2763,7 @@ static const extended::ZoneEra kZoneEraAmerica_Chihuahua[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2798,7 +2798,7 @@ static const extended::ZoneEra kZoneEraAmerica_Costa_Rica[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2833,7 +2833,7 @@ static const extended::ZoneEra kZoneEraAmerica_Creston[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2868,7 +2868,7 @@ static const extended::ZoneEra kZoneEraAmerica_Cuiaba[] ACE_TIME_PROGMEM = { 9 /*untilMonth*/, 24 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 - -04 2004 Oct 1 { @@ -2880,7 +2880,7 @@ static const extended::ZoneEra kZoneEraAmerica_Cuiaba[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 Brazil -04/-03 { @@ -2892,7 +2892,7 @@ static const extended::ZoneEra kZoneEraAmerica_Cuiaba[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2927,7 +2927,7 @@ static const extended::ZoneEra kZoneEraAmerica_Curacao[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2962,7 +2962,7 @@ static const extended::ZoneEra kZoneEraAmerica_Danmarkshavn[] ACE_TIME_PROGMEM = 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -2997,7 +2997,7 @@ static const extended::ZoneEra kZoneEraAmerica_Dawson[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3032,7 +3032,7 @@ static const extended::ZoneEra kZoneEraAmerica_Dawson_Creek[] ACE_TIME_PROGMEM = 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3067,7 +3067,7 @@ static const extended::ZoneEra kZoneEraAmerica_Denver[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3102,7 +3102,7 @@ static const extended::ZoneEra kZoneEraAmerica_Detroit[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3137,7 +3137,7 @@ static const extended::ZoneEra kZoneEraAmerica_Edmonton[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3172,7 +3172,7 @@ static const extended::ZoneEra kZoneEraAmerica_Eirunepe[] ACE_TIME_PROGMEM = { 6 /*untilMonth*/, 24 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 - -04 2013 Nov 10 { @@ -3184,7 +3184,7 @@ static const extended::ZoneEra kZoneEraAmerica_Eirunepe[] ACE_TIME_PROGMEM = { 11 /*untilMonth*/, 10 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -5:00 - -05 { @@ -3196,7 +3196,7 @@ static const extended::ZoneEra kZoneEraAmerica_Eirunepe[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3231,7 +3231,7 @@ static const extended::ZoneEra kZoneEraAmerica_El_Salvador[] ACE_TIME_PROGMEM = 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3266,7 +3266,7 @@ static const extended::ZoneEra kZoneEraAmerica_Fort_Nelson[] ACE_TIME_PROGMEM = 3 /*untilMonth*/, 8 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -7:00 - MST { @@ -3278,7 +3278,7 @@ static const extended::ZoneEra kZoneEraAmerica_Fort_Nelson[] ACE_TIME_PROGMEM = 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3313,7 +3313,7 @@ static const extended::ZoneEra kZoneEraAmerica_Fortaleza[] ACE_TIME_PROGMEM = { 9 /*untilMonth*/, 30 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 Brazil -03/-02 2000 Oct 22 { @@ -3325,7 +3325,7 @@ static const extended::ZoneEra kZoneEraAmerica_Fortaleza[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 22 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 - -03 2001 Sep 13 { @@ -3337,7 +3337,7 @@ static const extended::ZoneEra kZoneEraAmerica_Fortaleza[] ACE_TIME_PROGMEM = { 9 /*untilMonth*/, 13 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 Brazil -03/-02 2002 Oct 1 { @@ -3349,7 +3349,7 @@ static const extended::ZoneEra kZoneEraAmerica_Fortaleza[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 - -03 { @@ -3361,7 +3361,7 @@ static const extended::ZoneEra kZoneEraAmerica_Fortaleza[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3396,7 +3396,7 @@ static const extended::ZoneEra kZoneEraAmerica_Glace_Bay[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3431,7 +3431,7 @@ static const extended::ZoneEra kZoneEraAmerica_Godthab[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3466,7 +3466,7 @@ static const extended::ZoneEra kZoneEraAmerica_Goose_Bay[] ACE_TIME_PROGMEM = { 11 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 Canada A%sT { @@ -3478,7 +3478,7 @@ static const extended::ZoneEra kZoneEraAmerica_Goose_Bay[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3513,7 +3513,7 @@ static const extended::ZoneEra kZoneEraAmerica_Grand_Turk[] ACE_TIME_PROGMEM = { 11 /*untilMonth*/, 1 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 - AST 2018 Mar 11 3:00 { @@ -3525,7 +3525,7 @@ static const extended::ZoneEra kZoneEraAmerica_Grand_Turk[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 11 /*untilDay*/, 12 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -5:00 US E%sT { @@ -3537,7 +3537,7 @@ static const extended::ZoneEra kZoneEraAmerica_Grand_Turk[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3572,7 +3572,7 @@ static const extended::ZoneEra kZoneEraAmerica_Guatemala[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3607,7 +3607,7 @@ static const extended::ZoneEra kZoneEraAmerica_Guayaquil[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3642,7 +3642,7 @@ static const extended::ZoneEra kZoneEraAmerica_Guyana[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3677,7 +3677,7 @@ static const extended::ZoneEra kZoneEraAmerica_Halifax[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3712,7 +3712,7 @@ static const extended::ZoneEra kZoneEraAmerica_Havana[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3747,7 +3747,7 @@ static const extended::ZoneEra kZoneEraAmerica_Hermosillo[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -7:00 - MST { @@ -3759,7 +3759,7 @@ static const extended::ZoneEra kZoneEraAmerica_Hermosillo[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3794,7 +3794,7 @@ static const extended::ZoneEra kZoneEraAmerica_Indiana_Indianapolis[] ACE_TIME_P 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -5:00 US E%sT { @@ -3806,7 +3806,7 @@ static const extended::ZoneEra kZoneEraAmerica_Indiana_Indianapolis[] ACE_TIME_P 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3841,7 +3841,7 @@ static const extended::ZoneEra kZoneEraAmerica_Indiana_Knox[] ACE_TIME_PROGMEM = 4 /*untilMonth*/, 2 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -6:00 US C%sT { @@ -3853,7 +3853,7 @@ static const extended::ZoneEra kZoneEraAmerica_Indiana_Knox[] ACE_TIME_PROGMEM = 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3888,7 +3888,7 @@ static const extended::ZoneEra kZoneEraAmerica_Indiana_Marengo[] ACE_TIME_PROGME 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -5:00 US E%sT { @@ -3900,7 +3900,7 @@ static const extended::ZoneEra kZoneEraAmerica_Indiana_Marengo[] ACE_TIME_PROGME 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3935,7 +3935,7 @@ static const extended::ZoneEra kZoneEraAmerica_Indiana_Petersburg[] ACE_TIME_PRO 4 /*untilMonth*/, 2 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -6:00 US C%sT 2007 Nov 4 2:00 { @@ -3947,7 +3947,7 @@ static const extended::ZoneEra kZoneEraAmerica_Indiana_Petersburg[] ACE_TIME_PRO 11 /*untilMonth*/, 4 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -5:00 US E%sT { @@ -3959,7 +3959,7 @@ static const extended::ZoneEra kZoneEraAmerica_Indiana_Petersburg[] ACE_TIME_PRO 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -3994,7 +3994,7 @@ static const extended::ZoneEra kZoneEraAmerica_Indiana_Tell_City[] ACE_TIME_PROG 4 /*untilMonth*/, 2 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -6:00 US C%sT { @@ -4006,7 +4006,7 @@ static const extended::ZoneEra kZoneEraAmerica_Indiana_Tell_City[] ACE_TIME_PROG 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4041,7 +4041,7 @@ static const extended::ZoneEra kZoneEraAmerica_Indiana_Vevay[] ACE_TIME_PROGMEM 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -5:00 US E%sT { @@ -4053,7 +4053,7 @@ static const extended::ZoneEra kZoneEraAmerica_Indiana_Vevay[] ACE_TIME_PROGMEM 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4088,7 +4088,7 @@ static const extended::ZoneEra kZoneEraAmerica_Indiana_Vincennes[] ACE_TIME_PROG 4 /*untilMonth*/, 2 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -6:00 US C%sT 2007 Nov 4 2:00 { @@ -4100,7 +4100,7 @@ static const extended::ZoneEra kZoneEraAmerica_Indiana_Vincennes[] ACE_TIME_PROG 11 /*untilMonth*/, 4 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -5:00 US E%sT { @@ -4112,7 +4112,7 @@ static const extended::ZoneEra kZoneEraAmerica_Indiana_Vincennes[] ACE_TIME_PROG 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4147,7 +4147,7 @@ static const extended::ZoneEra kZoneEraAmerica_Indiana_Winamac[] ACE_TIME_PROGME 4 /*untilMonth*/, 2 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -6:00 US C%sT 2007 Mar 11 2:00 { @@ -4159,7 +4159,7 @@ static const extended::ZoneEra kZoneEraAmerica_Indiana_Winamac[] ACE_TIME_PROGME 3 /*untilMonth*/, 11 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -5:00 US E%sT { @@ -4171,7 +4171,7 @@ static const extended::ZoneEra kZoneEraAmerica_Indiana_Winamac[] ACE_TIME_PROGME 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4206,7 +4206,7 @@ static const extended::ZoneEra kZoneEraAmerica_Inuvik[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4241,7 +4241,7 @@ static const extended::ZoneEra kZoneEraAmerica_Iqaluit[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 31 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -6:00 Canada C%sT 2000 Oct 29 2:00 { @@ -4253,7 +4253,7 @@ static const extended::ZoneEra kZoneEraAmerica_Iqaluit[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 29 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -5:00 Canada E%sT { @@ -4265,7 +4265,7 @@ static const extended::ZoneEra kZoneEraAmerica_Iqaluit[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4300,7 +4300,7 @@ static const extended::ZoneEra kZoneEraAmerica_Jamaica[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4335,7 +4335,7 @@ static const extended::ZoneEra kZoneEraAmerica_Juneau[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4370,7 +4370,7 @@ static const extended::ZoneEra kZoneEraAmerica_Kentucky_Louisville[] ACE_TIME_PR 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4405,7 +4405,7 @@ static const extended::ZoneEra kZoneEraAmerica_Kentucky_Monticello[] ACE_TIME_PR 10 /*untilMonth*/, 29 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -5:00 US E%sT { @@ -4417,7 +4417,7 @@ static const extended::ZoneEra kZoneEraAmerica_Kentucky_Monticello[] ACE_TIME_PR 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4452,7 +4452,7 @@ static const extended::ZoneEra kZoneEraAmerica_La_Paz[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4487,7 +4487,7 @@ static const extended::ZoneEra kZoneEraAmerica_Lima[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4522,7 +4522,7 @@ static const extended::ZoneEra kZoneEraAmerica_Los_Angeles[] ACE_TIME_PROGMEM = 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4557,7 +4557,7 @@ static const extended::ZoneEra kZoneEraAmerica_Maceio[] ACE_TIME_PROGMEM = { 9 /*untilMonth*/, 30 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 Brazil -03/-02 2000 Oct 22 { @@ -4569,7 +4569,7 @@ static const extended::ZoneEra kZoneEraAmerica_Maceio[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 22 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 - -03 2001 Sep 13 { @@ -4581,7 +4581,7 @@ static const extended::ZoneEra kZoneEraAmerica_Maceio[] ACE_TIME_PROGMEM = { 9 /*untilMonth*/, 13 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 Brazil -03/-02 2002 Oct 1 { @@ -4593,7 +4593,7 @@ static const extended::ZoneEra kZoneEraAmerica_Maceio[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 - -03 { @@ -4605,7 +4605,7 @@ static const extended::ZoneEra kZoneEraAmerica_Maceio[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4640,7 +4640,7 @@ static const extended::ZoneEra kZoneEraAmerica_Managua[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4675,7 +4675,7 @@ static const extended::ZoneEra kZoneEraAmerica_Manaus[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4710,7 +4710,7 @@ static const extended::ZoneEra kZoneEraAmerica_Martinique[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4745,7 +4745,7 @@ static const extended::ZoneEra kZoneEraAmerica_Matamoros[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -6:00 US C%sT { @@ -4757,7 +4757,7 @@ static const extended::ZoneEra kZoneEraAmerica_Matamoros[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4792,7 +4792,7 @@ static const extended::ZoneEra kZoneEraAmerica_Mazatlan[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4827,7 +4827,7 @@ static const extended::ZoneEra kZoneEraAmerica_Menominee[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4862,7 +4862,7 @@ static const extended::ZoneEra kZoneEraAmerica_Merida[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4897,7 +4897,7 @@ static const extended::ZoneEra kZoneEraAmerica_Metlakatla[] ACE_TIME_PROGMEM = { 11 /*untilMonth*/, 1 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -9:00 US AK%sT { @@ -4909,7 +4909,7 @@ static const extended::ZoneEra kZoneEraAmerica_Metlakatla[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -4944,7 +4944,7 @@ static const extended::ZoneEra kZoneEraAmerica_Mexico_City[] ACE_TIME_PROGMEM = 9 /*untilMonth*/, 30 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -6:00 - CST 2002 Feb 20 { @@ -4956,7 +4956,7 @@ static const extended::ZoneEra kZoneEraAmerica_Mexico_City[] ACE_TIME_PROGMEM = 2 /*untilMonth*/, 20 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -6:00 Mexico C%sT { @@ -4968,7 +4968,7 @@ static const extended::ZoneEra kZoneEraAmerica_Mexico_City[] ACE_TIME_PROGMEM = 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5003,7 +5003,7 @@ static const extended::ZoneEra kZoneEraAmerica_Miquelon[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5038,7 +5038,7 @@ static const extended::ZoneEra kZoneEraAmerica_Moncton[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 Canada A%sT { @@ -5050,7 +5050,7 @@ static const extended::ZoneEra kZoneEraAmerica_Moncton[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5085,7 +5085,7 @@ static const extended::ZoneEra kZoneEraAmerica_Monterrey[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5120,7 +5120,7 @@ static const extended::ZoneEra kZoneEraAmerica_Montevideo[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5155,7 +5155,7 @@ static const extended::ZoneEra kZoneEraAmerica_Nassau[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5190,7 +5190,7 @@ static const extended::ZoneEra kZoneEraAmerica_New_York[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5225,7 +5225,7 @@ static const extended::ZoneEra kZoneEraAmerica_Nipigon[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5260,7 +5260,7 @@ static const extended::ZoneEra kZoneEraAmerica_Nome[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5295,7 +5295,7 @@ static const extended::ZoneEra kZoneEraAmerica_Noronha[] ACE_TIME_PROGMEM = { 9 /*untilMonth*/, 30 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -2:00 Brazil -02/-01 2000 Oct 15 { @@ -5307,7 +5307,7 @@ static const extended::ZoneEra kZoneEraAmerica_Noronha[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 15 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -2:00 - -02 2001 Sep 13 { @@ -5319,7 +5319,7 @@ static const extended::ZoneEra kZoneEraAmerica_Noronha[] ACE_TIME_PROGMEM = { 9 /*untilMonth*/, 13 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -2:00 Brazil -02/-01 2002 Oct 1 { @@ -5331,7 +5331,7 @@ static const extended::ZoneEra kZoneEraAmerica_Noronha[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -2:00 - -02 { @@ -5343,7 +5343,7 @@ static const extended::ZoneEra kZoneEraAmerica_Noronha[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5378,7 +5378,7 @@ static const extended::ZoneEra kZoneEraAmerica_North_Dakota_Beulah[] ACE_TIME_PR 11 /*untilMonth*/, 7 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -6:00 US C%sT { @@ -5390,7 +5390,7 @@ static const extended::ZoneEra kZoneEraAmerica_North_Dakota_Beulah[] ACE_TIME_PR 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5425,7 +5425,7 @@ static const extended::ZoneEra kZoneEraAmerica_North_Dakota_Center[] ACE_TIME_PR 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5460,7 +5460,7 @@ static const extended::ZoneEra kZoneEraAmerica_North_Dakota_New_Salem[] ACE_TIME 10 /*untilMonth*/, 26 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -6:00 US C%sT { @@ -5472,7 +5472,7 @@ static const extended::ZoneEra kZoneEraAmerica_North_Dakota_New_Salem[] ACE_TIME 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5507,7 +5507,7 @@ static const extended::ZoneEra kZoneEraAmerica_Ojinaga[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -7:00 US M%sT { @@ -5519,7 +5519,7 @@ static const extended::ZoneEra kZoneEraAmerica_Ojinaga[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5554,7 +5554,7 @@ static const extended::ZoneEra kZoneEraAmerica_Panama[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5589,7 +5589,7 @@ static const extended::ZoneEra kZoneEraAmerica_Pangnirtung[] ACE_TIME_PROGMEM = 10 /*untilMonth*/, 31 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -6:00 Canada C%sT 2000 Oct 29 2:00 { @@ -5601,7 +5601,7 @@ static const extended::ZoneEra kZoneEraAmerica_Pangnirtung[] ACE_TIME_PROGMEM = 10 /*untilMonth*/, 29 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -5:00 Canada E%sT { @@ -5613,7 +5613,7 @@ static const extended::ZoneEra kZoneEraAmerica_Pangnirtung[] ACE_TIME_PROGMEM = 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5648,7 +5648,7 @@ static const extended::ZoneEra kZoneEraAmerica_Paramaribo[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5683,7 +5683,7 @@ static const extended::ZoneEra kZoneEraAmerica_Phoenix[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5718,7 +5718,7 @@ static const extended::ZoneEra kZoneEraAmerica_Port_au_Prince[] ACE_TIME_PROGMEM 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5753,7 +5753,7 @@ static const extended::ZoneEra kZoneEraAmerica_Port_of_Spain[] ACE_TIME_PROGMEM 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5788,7 +5788,7 @@ static const extended::ZoneEra kZoneEraAmerica_Porto_Velho[] ACE_TIME_PROGMEM = 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5823,7 +5823,7 @@ static const extended::ZoneEra kZoneEraAmerica_Puerto_Rico[] ACE_TIME_PROGMEM = 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5858,7 +5858,7 @@ static const extended::ZoneEra kZoneEraAmerica_Punta_Arenas[] ACE_TIME_PROGMEM = 12 /*untilMonth*/, 4 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 - -03 { @@ -5870,7 +5870,7 @@ static const extended::ZoneEra kZoneEraAmerica_Punta_Arenas[] ACE_TIME_PROGMEM = 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5905,7 +5905,7 @@ static const extended::ZoneEra kZoneEraAmerica_Rainy_River[] ACE_TIME_PROGMEM = 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5940,7 +5940,7 @@ static const extended::ZoneEra kZoneEraAmerica_Rankin_Inlet[] ACE_TIME_PROGMEM = 10 /*untilMonth*/, 29 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -5:00 - EST 2001 Apr 1 3:00 { @@ -5952,7 +5952,7 @@ static const extended::ZoneEra kZoneEraAmerica_Rankin_Inlet[] ACE_TIME_PROGMEM = 4 /*untilMonth*/, 1 /*untilDay*/, 12 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -6:00 Canada C%sT { @@ -5964,7 +5964,7 @@ static const extended::ZoneEra kZoneEraAmerica_Rankin_Inlet[] ACE_TIME_PROGMEM = 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -5999,7 +5999,7 @@ static const extended::ZoneEra kZoneEraAmerica_Recife[] ACE_TIME_PROGMEM = { 9 /*untilMonth*/, 30 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 Brazil -03/-02 2000 Oct 15 { @@ -6011,7 +6011,7 @@ static const extended::ZoneEra kZoneEraAmerica_Recife[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 15 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 - -03 2001 Sep 13 { @@ -6023,7 +6023,7 @@ static const extended::ZoneEra kZoneEraAmerica_Recife[] ACE_TIME_PROGMEM = { 9 /*untilMonth*/, 13 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 Brazil -03/-02 2002 Oct 1 { @@ -6035,7 +6035,7 @@ static const extended::ZoneEra kZoneEraAmerica_Recife[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 - -03 { @@ -6047,7 +6047,7 @@ static const extended::ZoneEra kZoneEraAmerica_Recife[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6082,7 +6082,7 @@ static const extended::ZoneEra kZoneEraAmerica_Regina[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6117,7 +6117,7 @@ static const extended::ZoneEra kZoneEraAmerica_Resolute[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 29 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -5:00 - EST 2001 Apr 1 3:00 { @@ -6129,7 +6129,7 @@ static const extended::ZoneEra kZoneEraAmerica_Resolute[] ACE_TIME_PROGMEM = { 4 /*untilMonth*/, 1 /*untilDay*/, 12 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -6:00 Canada C%sT 2006 Oct 29 2:00 { @@ -6141,7 +6141,7 @@ static const extended::ZoneEra kZoneEraAmerica_Resolute[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 29 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -5:00 - EST 2007 Mar 11 3:00 { @@ -6153,7 +6153,7 @@ static const extended::ZoneEra kZoneEraAmerica_Resolute[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 11 /*untilDay*/, 12 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -6:00 Canada C%sT { @@ -6165,7 +6165,7 @@ static const extended::ZoneEra kZoneEraAmerica_Resolute[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6200,7 +6200,7 @@ static const extended::ZoneEra kZoneEraAmerica_Rio_Branco[] ACE_TIME_PROGMEM = { 6 /*untilMonth*/, 24 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 - -04 2013 Nov 10 { @@ -6212,7 +6212,7 @@ static const extended::ZoneEra kZoneEraAmerica_Rio_Branco[] ACE_TIME_PROGMEM = { 11 /*untilMonth*/, 10 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -5:00 - -05 { @@ -6224,7 +6224,7 @@ static const extended::ZoneEra kZoneEraAmerica_Rio_Branco[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6259,7 +6259,7 @@ static const extended::ZoneEra kZoneEraAmerica_Santarem[] ACE_TIME_PROGMEM = { 6 /*untilMonth*/, 24 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 - -03 { @@ -6271,7 +6271,7 @@ static const extended::ZoneEra kZoneEraAmerica_Santarem[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6306,7 +6306,7 @@ static const extended::ZoneEra kZoneEraAmerica_Santiago[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6341,7 +6341,7 @@ static const extended::ZoneEra kZoneEraAmerica_Santo_Domingo[] ACE_TIME_PROGMEM 10 /*untilMonth*/, 29 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -5:00 US E%sT 2000 Dec 3 1:00 { @@ -6353,7 +6353,7 @@ static const extended::ZoneEra kZoneEraAmerica_Santo_Domingo[] ACE_TIME_PROGMEM 12 /*untilMonth*/, 3 /*untilDay*/, 4 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -4:00 - AST { @@ -6365,7 +6365,7 @@ static const extended::ZoneEra kZoneEraAmerica_Santo_Domingo[] ACE_TIME_PROGMEM 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6400,7 +6400,7 @@ static const extended::ZoneEra kZoneEraAmerica_Sao_Paulo[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6435,7 +6435,7 @@ static const extended::ZoneEra kZoneEraAmerica_Scoresbysund[] ACE_TIME_PROGMEM = 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6470,7 +6470,7 @@ static const extended::ZoneEra kZoneEraAmerica_Sitka[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6505,7 +6505,7 @@ static const extended::ZoneEra kZoneEraAmerica_St_Johns[] ACE_TIME_PROGMEM = { 11 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:30 Canada N%sT { @@ -6517,7 +6517,7 @@ static const extended::ZoneEra kZoneEraAmerica_St_Johns[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6552,7 +6552,7 @@ static const extended::ZoneEra kZoneEraAmerica_Swift_Current[] ACE_TIME_PROGMEM 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6587,7 +6587,7 @@ static const extended::ZoneEra kZoneEraAmerica_Tegucigalpa[] ACE_TIME_PROGMEM = 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6622,7 +6622,7 @@ static const extended::ZoneEra kZoneEraAmerica_Thule[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6657,7 +6657,7 @@ static const extended::ZoneEra kZoneEraAmerica_Thunder_Bay[] ACE_TIME_PROGMEM = 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6692,7 +6692,7 @@ static const extended::ZoneEra kZoneEraAmerica_Tijuana[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -8:00 US P%sT 2002 Feb 20 { @@ -6704,7 +6704,7 @@ static const extended::ZoneEra kZoneEraAmerica_Tijuana[] ACE_TIME_PROGMEM = { 2 /*untilMonth*/, 20 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -8:00 Mexico P%sT 2010 { @@ -6716,7 +6716,7 @@ static const extended::ZoneEra kZoneEraAmerica_Tijuana[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -8:00 US P%sT { @@ -6728,7 +6728,7 @@ static const extended::ZoneEra kZoneEraAmerica_Tijuana[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6763,7 +6763,7 @@ static const extended::ZoneEra kZoneEraAmerica_Toronto[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6798,7 +6798,7 @@ static const extended::ZoneEra kZoneEraAmerica_Vancouver[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6833,7 +6833,7 @@ static const extended::ZoneEra kZoneEraAmerica_Whitehorse[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6868,7 +6868,7 @@ static const extended::ZoneEra kZoneEraAmerica_Winnipeg[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -6:00 Canada C%sT { @@ -6880,7 +6880,7 @@ static const extended::ZoneEra kZoneEraAmerica_Winnipeg[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6915,7 +6915,7 @@ static const extended::ZoneEra kZoneEraAmerica_Yakutat[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6950,7 +6950,7 @@ static const extended::ZoneEra kZoneEraAmerica_Yellowknife[] ACE_TIME_PROGMEM = 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -6985,7 +6985,7 @@ static const extended::ZoneEra kZoneEraAntarctica_Casey[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 18 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 11:00 - +11 2010 Mar 5 2:00 { @@ -6997,7 +6997,7 @@ static const extended::ZoneEra kZoneEraAntarctica_Casey[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 5 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 8:00 - +08 2011 Oct 28 2:00 { @@ -7009,7 +7009,7 @@ static const extended::ZoneEra kZoneEraAntarctica_Casey[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 28 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 11:00 - +11 2012 Feb 21 17:00u { @@ -7021,7 +7021,7 @@ static const extended::ZoneEra kZoneEraAntarctica_Casey[] ACE_TIME_PROGMEM = { 2 /*untilMonth*/, 21 /*untilDay*/, 68 /*untilTimeCode*/, - 'u' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*untilTimeModifier*/, }, // 8:00 - +08 2016 Oct 22 { @@ -7033,7 +7033,7 @@ static const extended::ZoneEra kZoneEraAntarctica_Casey[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 22 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 11:00 - +11 2018 Mar 11 4:00 { @@ -7045,7 +7045,7 @@ static const extended::ZoneEra kZoneEraAntarctica_Casey[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 11 /*untilDay*/, 16 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 8:00 - +08 { @@ -7057,7 +7057,7 @@ static const extended::ZoneEra kZoneEraAntarctica_Casey[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7092,7 +7092,7 @@ static const extended::ZoneEra kZoneEraAntarctica_Davis[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 18 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 5:00 - +05 2010 Mar 10 20:00u { @@ -7104,7 +7104,7 @@ static const extended::ZoneEra kZoneEraAntarctica_Davis[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 10 /*untilDay*/, 80 /*untilTimeCode*/, - 'u' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*untilTimeModifier*/, }, // 7:00 - +07 2011 Oct 28 2:00 { @@ -7116,7 +7116,7 @@ static const extended::ZoneEra kZoneEraAntarctica_Davis[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 28 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 5:00 - +05 2012 Feb 21 20:00u { @@ -7128,7 +7128,7 @@ static const extended::ZoneEra kZoneEraAntarctica_Davis[] ACE_TIME_PROGMEM = { 2 /*untilMonth*/, 21 /*untilDay*/, 80 /*untilTimeCode*/, - 'u' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*untilTimeModifier*/, }, // 7:00 - +07 { @@ -7140,7 +7140,7 @@ static const extended::ZoneEra kZoneEraAntarctica_Davis[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7175,7 +7175,7 @@ static const extended::ZoneEra kZoneEraAntarctica_DumontDUrville[] ACE_TIME_PROG 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7210,7 +7210,7 @@ static const extended::ZoneEra kZoneEraAntarctica_Macquarie[] ACE_TIME_PROGMEM = 4 /*untilMonth*/, 4 /*untilDay*/, 12 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 11:00 - +11 { @@ -7222,7 +7222,7 @@ static const extended::ZoneEra kZoneEraAntarctica_Macquarie[] ACE_TIME_PROGMEM = 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7257,7 +7257,7 @@ static const extended::ZoneEra kZoneEraAntarctica_Mawson[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 18 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 5:00 - +05 { @@ -7269,7 +7269,7 @@ static const extended::ZoneEra kZoneEraAntarctica_Mawson[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7304,7 +7304,7 @@ static const extended::ZoneEra kZoneEraAntarctica_Palmer[] ACE_TIME_PROGMEM = { 12 /*untilMonth*/, 4 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 - -03 { @@ -7316,7 +7316,7 @@ static const extended::ZoneEra kZoneEraAntarctica_Palmer[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7351,7 +7351,7 @@ static const extended::ZoneEra kZoneEraAntarctica_Rothera[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7386,7 +7386,7 @@ static const extended::ZoneEra kZoneEraAntarctica_Syowa[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7421,7 +7421,7 @@ static const extended::ZoneEra kZoneEraAntarctica_Troll[] ACE_TIME_PROGMEM = { 2 /*untilMonth*/, 12 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 0:00 Troll %s { @@ -7433,7 +7433,7 @@ static const extended::ZoneEra kZoneEraAntarctica_Troll[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7468,7 +7468,7 @@ static const extended::ZoneEra kZoneEraAntarctica_Vostok[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7503,7 +7503,7 @@ static const extended::ZoneEra kZoneEraAsia_Almaty[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 31 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 6:00 - +06 { @@ -7515,7 +7515,7 @@ static const extended::ZoneEra kZoneEraAsia_Almaty[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7550,7 +7550,7 @@ static const extended::ZoneEra kZoneEraAsia_Amman[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7585,7 +7585,7 @@ static const extended::ZoneEra kZoneEraAsia_Anadyr[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 28 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 11:00 Russia +11/+12 2011 Mar 27 2:00s { @@ -7597,7 +7597,7 @@ static const extended::ZoneEra kZoneEraAsia_Anadyr[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 12:00 - +12 { @@ -7609,7 +7609,7 @@ static const extended::ZoneEra kZoneEraAsia_Anadyr[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7644,7 +7644,7 @@ static const extended::ZoneEra kZoneEraAsia_Aqtau[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 31 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 5:00 - +05 { @@ -7656,7 +7656,7 @@ static const extended::ZoneEra kZoneEraAsia_Aqtau[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7691,7 +7691,7 @@ static const extended::ZoneEra kZoneEraAsia_Aqtobe[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 31 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 5:00 - +05 { @@ -7703,7 +7703,7 @@ static const extended::ZoneEra kZoneEraAsia_Aqtobe[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7738,7 +7738,7 @@ static const extended::ZoneEra kZoneEraAsia_Ashgabat[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7773,7 +7773,7 @@ static const extended::ZoneEra kZoneEraAsia_Atyrau[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 28 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 4:00 RussiaAsia +04/+05 2004 Oct 31 2:00s { @@ -7785,7 +7785,7 @@ static const extended::ZoneEra kZoneEraAsia_Atyrau[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 31 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 5:00 - +05 { @@ -7797,7 +7797,7 @@ static const extended::ZoneEra kZoneEraAsia_Atyrau[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7832,7 +7832,7 @@ static const extended::ZoneEra kZoneEraAsia_Baghdad[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7867,7 +7867,7 @@ static const extended::ZoneEra kZoneEraAsia_Baku[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7902,7 +7902,7 @@ static const extended::ZoneEra kZoneEraAsia_Bangkok[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -7937,7 +7937,7 @@ static const extended::ZoneEra kZoneEraAsia_Barnaul[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 7:00 - +07 2014 Oct 26 2:00s { @@ -7949,7 +7949,7 @@ static const extended::ZoneEra kZoneEraAsia_Barnaul[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 26 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 6:00 - +06 2016 Mar 27 2:00s { @@ -7961,7 +7961,7 @@ static const extended::ZoneEra kZoneEraAsia_Barnaul[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 7:00 - +07 { @@ -7973,7 +7973,7 @@ static const extended::ZoneEra kZoneEraAsia_Barnaul[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8008,7 +8008,7 @@ static const extended::ZoneEra kZoneEraAsia_Beirut[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8043,7 +8043,7 @@ static const extended::ZoneEra kZoneEraAsia_Bishkek[] ACE_TIME_PROGMEM = { 8 /*untilMonth*/, 12 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 6:00 - +06 { @@ -8055,7 +8055,7 @@ static const extended::ZoneEra kZoneEraAsia_Bishkek[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8090,7 +8090,7 @@ static const extended::ZoneEra kZoneEraAsia_Brunei[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8125,7 +8125,7 @@ static const extended::ZoneEra kZoneEraAsia_Chita[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 10:00 - +10 2014 Oct 26 2:00s { @@ -8137,7 +8137,7 @@ static const extended::ZoneEra kZoneEraAsia_Chita[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 26 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 8:00 - +08 2016 Mar 27 2:00 { @@ -8149,7 +8149,7 @@ static const extended::ZoneEra kZoneEraAsia_Chita[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 9:00 - +09 { @@ -8161,7 +8161,7 @@ static const extended::ZoneEra kZoneEraAsia_Chita[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8196,7 +8196,7 @@ static const extended::ZoneEra kZoneEraAsia_Choibalsan[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 31 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 8:00 Mongol +08/+09 { @@ -8208,7 +8208,7 @@ static const extended::ZoneEra kZoneEraAsia_Choibalsan[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8243,7 +8243,7 @@ static const extended::ZoneEra kZoneEraAsia_Colombo[] ACE_TIME_PROGMEM = { 4 /*untilMonth*/, 15 /*untilDay*/, 2 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 5:30 - +0530 { @@ -8255,7 +8255,7 @@ static const extended::ZoneEra kZoneEraAsia_Colombo[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8290,7 +8290,7 @@ static const extended::ZoneEra kZoneEraAsia_Damascus[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8325,7 +8325,7 @@ static const extended::ZoneEra kZoneEraAsia_Dhaka[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 6:00 Dhaka +06/+07 { @@ -8337,7 +8337,7 @@ static const extended::ZoneEra kZoneEraAsia_Dhaka[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8372,7 +8372,7 @@ static const extended::ZoneEra kZoneEraAsia_Dili[] ACE_TIME_PROGMEM = { 9 /*untilMonth*/, 17 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 9:00 - +09 { @@ -8384,7 +8384,7 @@ static const extended::ZoneEra kZoneEraAsia_Dili[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8419,7 +8419,7 @@ static const extended::ZoneEra kZoneEraAsia_Dubai[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8454,7 +8454,7 @@ static const extended::ZoneEra kZoneEraAsia_Dushanbe[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8489,7 +8489,7 @@ static const extended::ZoneEra kZoneEraAsia_Famagusta[] ACE_TIME_PROGMEM = { 9 /*untilMonth*/, 8 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 3:00 - +03 2017 Oct 29 1:00u { @@ -8501,7 +8501,7 @@ static const extended::ZoneEra kZoneEraAsia_Famagusta[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 29 /*untilDay*/, 4 /*untilTimeCode*/, - 'u' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*untilTimeModifier*/, }, // 2:00 EUAsia EE%sT { @@ -8513,7 +8513,7 @@ static const extended::ZoneEra kZoneEraAsia_Famagusta[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8548,7 +8548,7 @@ static const extended::ZoneEra kZoneEraAsia_Gaza[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 2:00 Palestine EE%sT 2008 Aug 29 0:00 { @@ -8560,7 +8560,7 @@ static const extended::ZoneEra kZoneEraAsia_Gaza[] ACE_TIME_PROGMEM = { 8 /*untilMonth*/, 29 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 2:00 - EET 2008 Sep { @@ -8572,7 +8572,7 @@ static const extended::ZoneEra kZoneEraAsia_Gaza[] ACE_TIME_PROGMEM = { 9 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 2:00 Palestine EE%sT 2010 { @@ -8584,7 +8584,7 @@ static const extended::ZoneEra kZoneEraAsia_Gaza[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 2:00 - EET 2010 Mar 27 0:01 { @@ -8596,7 +8596,7 @@ static const extended::ZoneEra kZoneEraAsia_Gaza[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 2:00 Palestine EE%sT 2011 Aug 1 { @@ -8608,7 +8608,7 @@ static const extended::ZoneEra kZoneEraAsia_Gaza[] ACE_TIME_PROGMEM = { 8 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 2:00 - EET 2012 { @@ -8620,7 +8620,7 @@ static const extended::ZoneEra kZoneEraAsia_Gaza[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 2:00 Palestine EE%sT { @@ -8632,7 +8632,7 @@ static const extended::ZoneEra kZoneEraAsia_Gaza[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8667,7 +8667,7 @@ static const extended::ZoneEra kZoneEraAsia_Hebron[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 2:00 Palestine EE%sT { @@ -8679,7 +8679,7 @@ static const extended::ZoneEra kZoneEraAsia_Hebron[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8714,7 +8714,7 @@ static const extended::ZoneEra kZoneEraAsia_Ho_Chi_Minh[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8749,7 +8749,7 @@ static const extended::ZoneEra kZoneEraAsia_Hong_Kong[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8784,7 +8784,7 @@ static const extended::ZoneEra kZoneEraAsia_Hovd[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8819,7 +8819,7 @@ static const extended::ZoneEra kZoneEraAsia_Irkutsk[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 9:00 - +09 2014 Oct 26 2:00s { @@ -8831,7 +8831,7 @@ static const extended::ZoneEra kZoneEraAsia_Irkutsk[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 26 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 8:00 - +08 { @@ -8843,7 +8843,7 @@ static const extended::ZoneEra kZoneEraAsia_Irkutsk[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8878,7 +8878,7 @@ static const extended::ZoneEra kZoneEraAsia_Jakarta[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8913,7 +8913,7 @@ static const extended::ZoneEra kZoneEraAsia_Jayapura[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8948,7 +8948,7 @@ static const extended::ZoneEra kZoneEraAsia_Jerusalem[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -8983,7 +8983,7 @@ static const extended::ZoneEra kZoneEraAsia_Kabul[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9018,7 +9018,7 @@ static const extended::ZoneEra kZoneEraAsia_Kamchatka[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 28 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 11:00 Russia +11/+12 2011 Mar 27 2:00s { @@ -9030,7 +9030,7 @@ static const extended::ZoneEra kZoneEraAsia_Kamchatka[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 12:00 - +12 { @@ -9042,7 +9042,7 @@ static const extended::ZoneEra kZoneEraAsia_Kamchatka[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9077,7 +9077,7 @@ static const extended::ZoneEra kZoneEraAsia_Karachi[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9112,7 +9112,7 @@ static const extended::ZoneEra kZoneEraAsia_Kathmandu[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9147,7 +9147,7 @@ static const extended::ZoneEra kZoneEraAsia_Khandyga[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 10:00 Russia +10/+11 2011 Mar 27 2:00s { @@ -9159,7 +9159,7 @@ static const extended::ZoneEra kZoneEraAsia_Khandyga[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 11:00 - +11 2011 Sep 13 0:00s { @@ -9171,7 +9171,7 @@ static const extended::ZoneEra kZoneEraAsia_Khandyga[] ACE_TIME_PROGMEM = { 9 /*untilMonth*/, 13 /*untilDay*/, 0 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 10:00 - +10 2014 Oct 26 2:00s { @@ -9183,7 +9183,7 @@ static const extended::ZoneEra kZoneEraAsia_Khandyga[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 26 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 9:00 - +09 { @@ -9195,7 +9195,7 @@ static const extended::ZoneEra kZoneEraAsia_Khandyga[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9230,7 +9230,7 @@ static const extended::ZoneEra kZoneEraAsia_Kolkata[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9265,7 +9265,7 @@ static const extended::ZoneEra kZoneEraAsia_Krasnoyarsk[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 8:00 - +08 2014 Oct 26 2:00s { @@ -9277,7 +9277,7 @@ static const extended::ZoneEra kZoneEraAsia_Krasnoyarsk[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 26 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 7:00 - +07 { @@ -9289,7 +9289,7 @@ static const extended::ZoneEra kZoneEraAsia_Krasnoyarsk[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9324,7 +9324,7 @@ static const extended::ZoneEra kZoneEraAsia_Kuala_Lumpur[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9359,7 +9359,7 @@ static const extended::ZoneEra kZoneEraAsia_Kuching[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9394,7 +9394,7 @@ static const extended::ZoneEra kZoneEraAsia_Macau[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9429,7 +9429,7 @@ static const extended::ZoneEra kZoneEraAsia_Magadan[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 12:00 - +12 2014 Oct 26 2:00s { @@ -9441,7 +9441,7 @@ static const extended::ZoneEra kZoneEraAsia_Magadan[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 26 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 10:00 - +10 2016 Apr 24 2:00s { @@ -9453,7 +9453,7 @@ static const extended::ZoneEra kZoneEraAsia_Magadan[] ACE_TIME_PROGMEM = { 4 /*untilMonth*/, 24 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 11:00 - +11 { @@ -9465,7 +9465,7 @@ static const extended::ZoneEra kZoneEraAsia_Magadan[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9500,7 +9500,7 @@ static const extended::ZoneEra kZoneEraAsia_Makassar[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9535,7 +9535,7 @@ static const extended::ZoneEra kZoneEraAsia_Manila[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9570,7 +9570,7 @@ static const extended::ZoneEra kZoneEraAsia_Nicosia[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9605,7 +9605,7 @@ static const extended::ZoneEra kZoneEraAsia_Novokuznetsk[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 28 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 6:00 Russia +06/+07 2011 Mar 27 2:00s { @@ -9617,7 +9617,7 @@ static const extended::ZoneEra kZoneEraAsia_Novokuznetsk[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 7:00 - +07 { @@ -9629,7 +9629,7 @@ static const extended::ZoneEra kZoneEraAsia_Novokuznetsk[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9664,7 +9664,7 @@ static const extended::ZoneEra kZoneEraAsia_Novosibirsk[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 7:00 - +07 2014 Oct 26 2:00s { @@ -9676,7 +9676,7 @@ static const extended::ZoneEra kZoneEraAsia_Novosibirsk[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 26 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 6:00 - +06 2016 Jul 24 2:00s { @@ -9688,7 +9688,7 @@ static const extended::ZoneEra kZoneEraAsia_Novosibirsk[] ACE_TIME_PROGMEM = { 7 /*untilMonth*/, 24 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 7:00 - +07 { @@ -9700,7 +9700,7 @@ static const extended::ZoneEra kZoneEraAsia_Novosibirsk[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9735,7 +9735,7 @@ static const extended::ZoneEra kZoneEraAsia_Omsk[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 7:00 - +07 2014 Oct 26 2:00s { @@ -9747,7 +9747,7 @@ static const extended::ZoneEra kZoneEraAsia_Omsk[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 26 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 6:00 - +06 { @@ -9759,7 +9759,7 @@ static const extended::ZoneEra kZoneEraAsia_Omsk[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9794,7 +9794,7 @@ static const extended::ZoneEra kZoneEraAsia_Oral[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 31 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 5:00 - +05 { @@ -9806,7 +9806,7 @@ static const extended::ZoneEra kZoneEraAsia_Oral[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9841,7 +9841,7 @@ static const extended::ZoneEra kZoneEraAsia_Pontianak[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9876,7 +9876,7 @@ static const extended::ZoneEra kZoneEraAsia_Pyongyang[] ACE_TIME_PROGMEM = { 8 /*untilMonth*/, 15 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 8:30 - KST 2018 May 4 23:30 { @@ -9888,7 +9888,7 @@ static const extended::ZoneEra kZoneEraAsia_Pyongyang[] ACE_TIME_PROGMEM = { 5 /*untilMonth*/, 4 /*untilDay*/, 94 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 9:00 - KST { @@ -9900,7 +9900,7 @@ static const extended::ZoneEra kZoneEraAsia_Pyongyang[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9935,7 +9935,7 @@ static const extended::ZoneEra kZoneEraAsia_Qatar[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -9970,7 +9970,7 @@ static const extended::ZoneEra kZoneEraAsia_Qyzylorda[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 31 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 6:00 - +06 { @@ -9982,7 +9982,7 @@ static const extended::ZoneEra kZoneEraAsia_Qyzylorda[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -10017,7 +10017,7 @@ static const extended::ZoneEra kZoneEraAsia_Riyadh[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -10052,7 +10052,7 @@ static const extended::ZoneEra kZoneEraAsia_Sakhalin[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 11:00 - +11 2014 Oct 26 2:00s { @@ -10064,7 +10064,7 @@ static const extended::ZoneEra kZoneEraAsia_Sakhalin[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 26 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 10:00 - +10 2016 Mar 27 2:00s { @@ -10076,7 +10076,7 @@ static const extended::ZoneEra kZoneEraAsia_Sakhalin[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 11:00 - +11 { @@ -10088,7 +10088,7 @@ static const extended::ZoneEra kZoneEraAsia_Sakhalin[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -10123,7 +10123,7 @@ static const extended::ZoneEra kZoneEraAsia_Samarkand[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -10158,7 +10158,7 @@ static const extended::ZoneEra kZoneEraAsia_Seoul[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -10193,7 +10193,7 @@ static const extended::ZoneEra kZoneEraAsia_Shanghai[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -10228,7 +10228,7 @@ static const extended::ZoneEra kZoneEraAsia_Singapore[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -10263,7 +10263,7 @@ static const extended::ZoneEra kZoneEraAsia_Srednekolymsk[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 12:00 - +12 2014 Oct 26 2:00s { @@ -10275,7 +10275,7 @@ static const extended::ZoneEra kZoneEraAsia_Srednekolymsk[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 26 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 11:00 - +11 { @@ -10287,7 +10287,7 @@ static const extended::ZoneEra kZoneEraAsia_Srednekolymsk[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -10322,7 +10322,7 @@ static const extended::ZoneEra kZoneEraAsia_Taipei[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -10357,7 +10357,7 @@ static const extended::ZoneEra kZoneEraAsia_Tashkent[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -10392,7 +10392,7 @@ static const extended::ZoneEra kZoneEraAsia_Tbilisi[] ACE_TIME_PROGMEM = { 6 /*untilMonth*/, 27 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 3:00 RussiaAsia +03/+04 2005 Mar lastSun 2:00 { @@ -10404,7 +10404,7 @@ static const extended::ZoneEra kZoneEraAsia_Tbilisi[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 4:00 - +04 { @@ -10416,7 +10416,7 @@ static const extended::ZoneEra kZoneEraAsia_Tbilisi[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -10451,7 +10451,7 @@ static const extended::ZoneEra kZoneEraAsia_Tehran[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -10486,7 +10486,7 @@ static const extended::ZoneEra kZoneEraAsia_Thimphu[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -10521,7 +10521,7 @@ static const extended::ZoneEra kZoneEraAsia_Tokyo[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -10556,7 +10556,7 @@ static const extended::ZoneEra kZoneEraAsia_Tomsk[] ACE_TIME_PROGMEM = { 5 /*untilMonth*/, 1 /*untilDay*/, 12 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 6:00 Russia +06/+07 2011 Mar 27 2:00s { @@ -10568,7 +10568,7 @@ static const extended::ZoneEra kZoneEraAsia_Tomsk[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 7:00 - +07 2014 Oct 26 2:00s { @@ -10580,7 +10580,7 @@ static const extended::ZoneEra kZoneEraAsia_Tomsk[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 26 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 6:00 - +06 2016 May 29 2:00s { @@ -10592,7 +10592,7 @@ static const extended::ZoneEra kZoneEraAsia_Tomsk[] ACE_TIME_PROGMEM = { 5 /*untilMonth*/, 29 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 7:00 - +07 { @@ -10604,7 +10604,7 @@ static const extended::ZoneEra kZoneEraAsia_Tomsk[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -10639,7 +10639,7 @@ static const extended::ZoneEra kZoneEraAsia_Ulaanbaatar[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -10674,7 +10674,7 @@ static const extended::ZoneEra kZoneEraAsia_Urumqi[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -10709,7 +10709,7 @@ static const extended::ZoneEra kZoneEraAsia_Ust_Nera[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 12:00 - +12 2011 Sep 13 0:00s { @@ -10721,7 +10721,7 @@ static const extended::ZoneEra kZoneEraAsia_Ust_Nera[] ACE_TIME_PROGMEM = { 9 /*untilMonth*/, 13 /*untilDay*/, 0 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 11:00 - +11 2014 Oct 26 2:00s { @@ -10733,7 +10733,7 @@ static const extended::ZoneEra kZoneEraAsia_Ust_Nera[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 26 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 10:00 - +10 { @@ -10745,7 +10745,7 @@ static const extended::ZoneEra kZoneEraAsia_Ust_Nera[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -10780,7 +10780,7 @@ static const extended::ZoneEra kZoneEraAsia_Vladivostok[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 11:00 - +11 2014 Oct 26 2:00s { @@ -10792,7 +10792,7 @@ static const extended::ZoneEra kZoneEraAsia_Vladivostok[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 26 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 10:00 - +10 { @@ -10804,7 +10804,7 @@ static const extended::ZoneEra kZoneEraAsia_Vladivostok[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -10839,7 +10839,7 @@ static const extended::ZoneEra kZoneEraAsia_Yakutsk[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 10:00 - +10 2014 Oct 26 2:00s { @@ -10851,7 +10851,7 @@ static const extended::ZoneEra kZoneEraAsia_Yakutsk[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 26 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 9:00 - +09 { @@ -10863,7 +10863,7 @@ static const extended::ZoneEra kZoneEraAsia_Yakutsk[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -10898,7 +10898,7 @@ static const extended::ZoneEra kZoneEraAsia_Yangon[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -10933,7 +10933,7 @@ static const extended::ZoneEra kZoneEraAsia_Yekaterinburg[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 6:00 - +06 2014 Oct 26 2:00s { @@ -10945,7 +10945,7 @@ static const extended::ZoneEra kZoneEraAsia_Yekaterinburg[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 26 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 5:00 - +05 { @@ -10957,7 +10957,7 @@ static const extended::ZoneEra kZoneEraAsia_Yekaterinburg[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -10992,7 +10992,7 @@ static const extended::ZoneEra kZoneEraAsia_Yerevan[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 4:00 Armenia +04/+05 { @@ -11004,7 +11004,7 @@ static const extended::ZoneEra kZoneEraAsia_Yerevan[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -11039,7 +11039,7 @@ static const extended::ZoneEra kZoneEraAtlantic_Azores[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -11074,7 +11074,7 @@ static const extended::ZoneEra kZoneEraAtlantic_Bermuda[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -11109,7 +11109,7 @@ static const extended::ZoneEra kZoneEraAtlantic_Canary[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -11144,7 +11144,7 @@ static const extended::ZoneEra kZoneEraAtlantic_Cape_Verde[] ACE_TIME_PROGMEM = 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -11179,7 +11179,7 @@ static const extended::ZoneEra kZoneEraAtlantic_Faroe[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -11214,7 +11214,7 @@ static const extended::ZoneEra kZoneEraAtlantic_Madeira[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -11249,7 +11249,7 @@ static const extended::ZoneEra kZoneEraAtlantic_Reykjavik[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -11284,7 +11284,7 @@ static const extended::ZoneEra kZoneEraAtlantic_South_Georgia[] ACE_TIME_PROGMEM 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -11319,7 +11319,7 @@ static const extended::ZoneEra kZoneEraAtlantic_Stanley[] ACE_TIME_PROGMEM = { 9 /*untilMonth*/, 5 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // -3:00 - -03 { @@ -11331,7 +11331,7 @@ static const extended::ZoneEra kZoneEraAtlantic_Stanley[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -11366,7 +11366,7 @@ static const extended::ZoneEra kZoneEraAustralia_Adelaide[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -11401,7 +11401,7 @@ static const extended::ZoneEra kZoneEraAustralia_Brisbane[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -11436,7 +11436,7 @@ static const extended::ZoneEra kZoneEraAustralia_Broken_Hill[] ACE_TIME_PROGMEM 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 9:30 AS AC%sT { @@ -11448,7 +11448,7 @@ static const extended::ZoneEra kZoneEraAustralia_Broken_Hill[] ACE_TIME_PROGMEM 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -11483,7 +11483,7 @@ static const extended::ZoneEra kZoneEraAustralia_Currie[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -11518,7 +11518,7 @@ static const extended::ZoneEra kZoneEraAustralia_Darwin[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -11553,7 +11553,7 @@ static const extended::ZoneEra kZoneEraAustralia_Eucla[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -11588,7 +11588,7 @@ static const extended::ZoneEra kZoneEraAustralia_Hobart[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -11623,7 +11623,7 @@ static const extended::ZoneEra kZoneEraAustralia_Lindeman[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -11658,7 +11658,7 @@ static const extended::ZoneEra kZoneEraAustralia_Lord_Howe[] ACE_TIME_PROGMEM = 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -11693,7 +11693,7 @@ static const extended::ZoneEra kZoneEraAustralia_Melbourne[] ACE_TIME_PROGMEM = 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -11728,7 +11728,7 @@ static const extended::ZoneEra kZoneEraAustralia_Perth[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -11763,7 +11763,7 @@ static const extended::ZoneEra kZoneEraAustralia_Sydney[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -11798,7 +11798,7 @@ static const extended::ZoneEra kZoneEraCET[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -11833,7 +11833,7 @@ static const extended::ZoneEra kZoneEraCST6CDT[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -11868,7 +11868,7 @@ static const extended::ZoneEra kZoneEraEET[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -11903,7 +11903,7 @@ static const extended::ZoneEra kZoneEraEST[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -11938,7 +11938,7 @@ static const extended::ZoneEra kZoneEraEST5EDT[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -11973,7 +11973,7 @@ static const extended::ZoneEra kZoneEraEtc_GMT[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -12008,7 +12008,7 @@ static const extended::ZoneEra kZoneEraEtc_GMT_PLUS_1[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -12043,7 +12043,7 @@ static const extended::ZoneEra kZoneEraEtc_GMT_PLUS_10[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -12078,7 +12078,7 @@ static const extended::ZoneEra kZoneEraEtc_GMT_PLUS_11[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -12113,7 +12113,7 @@ static const extended::ZoneEra kZoneEraEtc_GMT_PLUS_12[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -12148,7 +12148,7 @@ static const extended::ZoneEra kZoneEraEtc_GMT_PLUS_2[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -12183,7 +12183,7 @@ static const extended::ZoneEra kZoneEraEtc_GMT_PLUS_3[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -12218,7 +12218,7 @@ static const extended::ZoneEra kZoneEraEtc_GMT_PLUS_4[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -12253,7 +12253,7 @@ static const extended::ZoneEra kZoneEraEtc_GMT_PLUS_5[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -12288,7 +12288,7 @@ static const extended::ZoneEra kZoneEraEtc_GMT_PLUS_6[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -12323,7 +12323,7 @@ static const extended::ZoneEra kZoneEraEtc_GMT_PLUS_7[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -12358,7 +12358,7 @@ static const extended::ZoneEra kZoneEraEtc_GMT_PLUS_8[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -12393,7 +12393,7 @@ static const extended::ZoneEra kZoneEraEtc_GMT_PLUS_9[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -12428,7 +12428,7 @@ static const extended::ZoneEra kZoneEraEtc_GMT_1[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -12463,7 +12463,7 @@ static const extended::ZoneEra kZoneEraEtc_GMT_10[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -12498,7 +12498,7 @@ static const extended::ZoneEra kZoneEraEtc_GMT_11[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -12533,7 +12533,7 @@ static const extended::ZoneEra kZoneEraEtc_GMT_12[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -12568,7 +12568,7 @@ static const extended::ZoneEra kZoneEraEtc_GMT_13[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -12603,7 +12603,7 @@ static const extended::ZoneEra kZoneEraEtc_GMT_14[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -12638,7 +12638,7 @@ static const extended::ZoneEra kZoneEraEtc_GMT_2[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -12673,7 +12673,7 @@ static const extended::ZoneEra kZoneEraEtc_GMT_3[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -12708,7 +12708,7 @@ static const extended::ZoneEra kZoneEraEtc_GMT_4[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -12743,7 +12743,7 @@ static const extended::ZoneEra kZoneEraEtc_GMT_5[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -12778,7 +12778,7 @@ static const extended::ZoneEra kZoneEraEtc_GMT_6[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -12813,7 +12813,7 @@ static const extended::ZoneEra kZoneEraEtc_GMT_7[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -12848,7 +12848,7 @@ static const extended::ZoneEra kZoneEraEtc_GMT_8[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -12883,7 +12883,7 @@ static const extended::ZoneEra kZoneEraEtc_GMT_9[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -12918,7 +12918,7 @@ static const extended::ZoneEra kZoneEraEtc_UCT[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -12953,7 +12953,7 @@ static const extended::ZoneEra kZoneEraEtc_UTC[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -12988,7 +12988,7 @@ static const extended::ZoneEra kZoneEraEurope_Amsterdam[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -13023,7 +13023,7 @@ static const extended::ZoneEra kZoneEraEurope_Andorra[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -13058,7 +13058,7 @@ static const extended::ZoneEra kZoneEraEurope_Astrakhan[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 4:00 - +04 2014 Oct 26 2:00s { @@ -13070,7 +13070,7 @@ static const extended::ZoneEra kZoneEraEurope_Astrakhan[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 26 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 3:00 - +03 2016 Mar 27 2:00s { @@ -13082,7 +13082,7 @@ static const extended::ZoneEra kZoneEraEurope_Astrakhan[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 4:00 - +04 { @@ -13094,7 +13094,7 @@ static const extended::ZoneEra kZoneEraEurope_Astrakhan[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -13129,7 +13129,7 @@ static const extended::ZoneEra kZoneEraEurope_Athens[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -13164,7 +13164,7 @@ static const extended::ZoneEra kZoneEraEurope_Belgrade[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -13199,7 +13199,7 @@ static const extended::ZoneEra kZoneEraEurope_Berlin[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -13234,7 +13234,7 @@ static const extended::ZoneEra kZoneEraEurope_Brussels[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -13269,7 +13269,7 @@ static const extended::ZoneEra kZoneEraEurope_Bucharest[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -13304,7 +13304,7 @@ static const extended::ZoneEra kZoneEraEurope_Budapest[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -13339,7 +13339,7 @@ static const extended::ZoneEra kZoneEraEurope_Chisinau[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -13374,7 +13374,7 @@ static const extended::ZoneEra kZoneEraEurope_Copenhagen[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -13409,7 +13409,7 @@ static const extended::ZoneEra kZoneEraEurope_Dublin[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -13444,7 +13444,7 @@ static const extended::ZoneEra kZoneEraEurope_Gibraltar[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -13479,7 +13479,7 @@ static const extended::ZoneEra kZoneEraEurope_Helsinki[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -13514,7 +13514,7 @@ static const extended::ZoneEra kZoneEraEurope_Istanbul[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 2:00 EU EE%sT 2011 Mar 27 1:00u { @@ -13526,7 +13526,7 @@ static const extended::ZoneEra kZoneEraEurope_Istanbul[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 4 /*untilTimeCode*/, - 'u' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*untilTimeModifier*/, }, // 2:00 - EET 2011 Mar 28 1:00u { @@ -13538,7 +13538,7 @@ static const extended::ZoneEra kZoneEraEurope_Istanbul[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 28 /*untilDay*/, 4 /*untilTimeCode*/, - 'u' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*untilTimeModifier*/, }, // 2:00 EU EE%sT 2014 Mar 30 1:00u { @@ -13550,7 +13550,7 @@ static const extended::ZoneEra kZoneEraEurope_Istanbul[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 30 /*untilDay*/, 4 /*untilTimeCode*/, - 'u' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*untilTimeModifier*/, }, // 2:00 - EET 2014 Mar 31 1:00u { @@ -13562,7 +13562,7 @@ static const extended::ZoneEra kZoneEraEurope_Istanbul[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 31 /*untilDay*/, 4 /*untilTimeCode*/, - 'u' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*untilTimeModifier*/, }, // 2:00 EU EE%sT 2015 Oct 25 1:00u { @@ -13574,7 +13574,7 @@ static const extended::ZoneEra kZoneEraEurope_Istanbul[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 25 /*untilDay*/, 4 /*untilTimeCode*/, - 'u' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*untilTimeModifier*/, }, // 2:00 1:00 EEST 2015 Nov 8 1:00u { @@ -13586,7 +13586,7 @@ static const extended::ZoneEra kZoneEraEurope_Istanbul[] ACE_TIME_PROGMEM = { 11 /*untilMonth*/, 8 /*untilDay*/, 4 /*untilTimeCode*/, - 'u' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*untilTimeModifier*/, }, // 2:00 EU EE%sT 2016 Sep 7 { @@ -13598,7 +13598,7 @@ static const extended::ZoneEra kZoneEraEurope_Istanbul[] ACE_TIME_PROGMEM = { 9 /*untilMonth*/, 7 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 3:00 - +03 { @@ -13610,7 +13610,7 @@ static const extended::ZoneEra kZoneEraEurope_Istanbul[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -13645,7 +13645,7 @@ static const extended::ZoneEra kZoneEraEurope_Kaliningrad[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 3:00 - +03 2014 Oct 26 2:00s { @@ -13657,7 +13657,7 @@ static const extended::ZoneEra kZoneEraEurope_Kaliningrad[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 26 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 2:00 - EET { @@ -13669,7 +13669,7 @@ static const extended::ZoneEra kZoneEraEurope_Kaliningrad[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -13704,7 +13704,7 @@ static const extended::ZoneEra kZoneEraEurope_Kiev[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -13739,7 +13739,7 @@ static const extended::ZoneEra kZoneEraEurope_Kirov[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 4:00 - +04 2014 Oct 26 2:00s { @@ -13751,7 +13751,7 @@ static const extended::ZoneEra kZoneEraEurope_Kirov[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 26 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 3:00 - +03 { @@ -13763,7 +13763,7 @@ static const extended::ZoneEra kZoneEraEurope_Kirov[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -13798,7 +13798,7 @@ static const extended::ZoneEra kZoneEraEurope_Lisbon[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -13833,7 +13833,7 @@ static const extended::ZoneEra kZoneEraEurope_London[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -13868,7 +13868,7 @@ static const extended::ZoneEra kZoneEraEurope_Luxembourg[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -13903,7 +13903,7 @@ static const extended::ZoneEra kZoneEraEurope_Madrid[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -13938,7 +13938,7 @@ static const extended::ZoneEra kZoneEraEurope_Malta[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -13973,7 +13973,7 @@ static const extended::ZoneEra kZoneEraEurope_Minsk[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 3:00 - +03 { @@ -13985,7 +13985,7 @@ static const extended::ZoneEra kZoneEraEurope_Minsk[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -14020,7 +14020,7 @@ static const extended::ZoneEra kZoneEraEurope_Monaco[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -14055,7 +14055,7 @@ static const extended::ZoneEra kZoneEraEurope_Moscow[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 4:00 - MSK 2014 Oct 26 2:00s { @@ -14067,7 +14067,7 @@ static const extended::ZoneEra kZoneEraEurope_Moscow[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 26 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 3:00 - MSK { @@ -14079,7 +14079,7 @@ static const extended::ZoneEra kZoneEraEurope_Moscow[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -14114,7 +14114,7 @@ static const extended::ZoneEra kZoneEraEurope_Oslo[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -14149,7 +14149,7 @@ static const extended::ZoneEra kZoneEraEurope_Paris[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -14184,7 +14184,7 @@ static const extended::ZoneEra kZoneEraEurope_Prague[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -14219,7 +14219,7 @@ static const extended::ZoneEra kZoneEraEurope_Riga[] ACE_TIME_PROGMEM = { 2 /*untilMonth*/, 29 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 2:00 - EET 2001 Jan 2 { @@ -14231,7 +14231,7 @@ static const extended::ZoneEra kZoneEraEurope_Riga[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 2 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 2:00 EU EE%sT { @@ -14243,7 +14243,7 @@ static const extended::ZoneEra kZoneEraEurope_Riga[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -14278,7 +14278,7 @@ static const extended::ZoneEra kZoneEraEurope_Rome[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -14313,7 +14313,7 @@ static const extended::ZoneEra kZoneEraEurope_Samara[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 28 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 3:00 Russia +03/+04 2011 Mar 27 2:00s { @@ -14325,7 +14325,7 @@ static const extended::ZoneEra kZoneEraEurope_Samara[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 4:00 - +04 { @@ -14337,7 +14337,7 @@ static const extended::ZoneEra kZoneEraEurope_Samara[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -14372,7 +14372,7 @@ static const extended::ZoneEra kZoneEraEurope_Saratov[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 4:00 - +04 2014 Oct 26 2:00s { @@ -14384,7 +14384,7 @@ static const extended::ZoneEra kZoneEraEurope_Saratov[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 26 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 3:00 - +03 2016 Dec 4 2:00s { @@ -14396,7 +14396,7 @@ static const extended::ZoneEra kZoneEraEurope_Saratov[] ACE_TIME_PROGMEM = { 12 /*untilMonth*/, 4 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 4:00 - +04 { @@ -14408,7 +14408,7 @@ static const extended::ZoneEra kZoneEraEurope_Saratov[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -14443,7 +14443,7 @@ static const extended::ZoneEra kZoneEraEurope_Simferopol[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 30 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 4:00 - MSK 2014 Oct 26 2:00s { @@ -14455,7 +14455,7 @@ static const extended::ZoneEra kZoneEraEurope_Simferopol[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 26 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 3:00 - MSK { @@ -14467,7 +14467,7 @@ static const extended::ZoneEra kZoneEraEurope_Simferopol[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -14502,7 +14502,7 @@ static const extended::ZoneEra kZoneEraEurope_Sofia[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -14537,7 +14537,7 @@ static const extended::ZoneEra kZoneEraEurope_Stockholm[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -14572,7 +14572,7 @@ static const extended::ZoneEra kZoneEraEurope_Tallinn[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 31 /*untilDay*/, 16 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 2:00 - EET 2002 Feb 21 { @@ -14584,7 +14584,7 @@ static const extended::ZoneEra kZoneEraEurope_Tallinn[] ACE_TIME_PROGMEM = { 2 /*untilMonth*/, 21 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 2:00 EU EE%sT { @@ -14596,7 +14596,7 @@ static const extended::ZoneEra kZoneEraEurope_Tallinn[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -14631,7 +14631,7 @@ static const extended::ZoneEra kZoneEraEurope_Tirane[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -14666,7 +14666,7 @@ static const extended::ZoneEra kZoneEraEurope_Ulyanovsk[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 4:00 - +04 2014 Oct 26 2:00s { @@ -14678,7 +14678,7 @@ static const extended::ZoneEra kZoneEraEurope_Ulyanovsk[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 26 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 3:00 - +03 2016 Mar 27 2:00s { @@ -14690,7 +14690,7 @@ static const extended::ZoneEra kZoneEraEurope_Ulyanovsk[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 4:00 - +04 { @@ -14702,7 +14702,7 @@ static const extended::ZoneEra kZoneEraEurope_Ulyanovsk[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -14737,7 +14737,7 @@ static const extended::ZoneEra kZoneEraEurope_Uzhgorod[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -14772,7 +14772,7 @@ static const extended::ZoneEra kZoneEraEurope_Vienna[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -14807,7 +14807,7 @@ static const extended::ZoneEra kZoneEraEurope_Vilnius[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 31 /*untilDay*/, 4 /*untilTimeCode*/, - 'u' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*untilTimeModifier*/, }, // 2:00 - EET 2003 Jan 1 { @@ -14819,7 +14819,7 @@ static const extended::ZoneEra kZoneEraEurope_Vilnius[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 2:00 EU EE%sT { @@ -14831,7 +14831,7 @@ static const extended::ZoneEra kZoneEraEurope_Vilnius[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -14866,7 +14866,7 @@ static const extended::ZoneEra kZoneEraEurope_Volgograd[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 4:00 - +04 2014 Oct 26 2:00s { @@ -14878,7 +14878,7 @@ static const extended::ZoneEra kZoneEraEurope_Volgograd[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 26 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 3:00 - +03 2018 Oct 28 2:00s { @@ -14890,7 +14890,7 @@ static const extended::ZoneEra kZoneEraEurope_Volgograd[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 28 /*untilDay*/, 8 /*untilTimeCode*/, - 's' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*untilTimeModifier*/, }, // 4:00 - +04 { @@ -14902,7 +14902,7 @@ static const extended::ZoneEra kZoneEraEurope_Volgograd[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -14937,7 +14937,7 @@ static const extended::ZoneEra kZoneEraEurope_Warsaw[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -14972,7 +14972,7 @@ static const extended::ZoneEra kZoneEraEurope_Zaporozhye[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -15007,7 +15007,7 @@ static const extended::ZoneEra kZoneEraEurope_Zurich[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -15042,7 +15042,7 @@ static const extended::ZoneEra kZoneEraHST[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -15077,7 +15077,7 @@ static const extended::ZoneEra kZoneEraIndian_Chagos[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -15112,7 +15112,7 @@ static const extended::ZoneEra kZoneEraIndian_Christmas[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -15147,7 +15147,7 @@ static const extended::ZoneEra kZoneEraIndian_Cocos[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -15182,7 +15182,7 @@ static const extended::ZoneEra kZoneEraIndian_Kerguelen[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -15217,7 +15217,7 @@ static const extended::ZoneEra kZoneEraIndian_Mahe[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -15252,7 +15252,7 @@ static const extended::ZoneEra kZoneEraIndian_Maldives[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -15287,7 +15287,7 @@ static const extended::ZoneEra kZoneEraIndian_Mauritius[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -15322,7 +15322,7 @@ static const extended::ZoneEra kZoneEraIndian_Reunion[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -15357,7 +15357,7 @@ static const extended::ZoneEra kZoneEraMET[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -15392,7 +15392,7 @@ static const extended::ZoneEra kZoneEraMST[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -15427,7 +15427,7 @@ static const extended::ZoneEra kZoneEraMST7MDT[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -15462,7 +15462,7 @@ static const extended::ZoneEra kZoneEraPST8PDT[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -15497,7 +15497,7 @@ static const extended::ZoneEra kZoneEraPacific_Apia[] ACE_TIME_PROGMEM = { 12 /*untilMonth*/, 29 /*untilDay*/, 96 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 13:00 WS +13/+14 { @@ -15509,7 +15509,7 @@ static const extended::ZoneEra kZoneEraPacific_Apia[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -15544,7 +15544,7 @@ static const extended::ZoneEra kZoneEraPacific_Auckland[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -15579,7 +15579,7 @@ static const extended::ZoneEra kZoneEraPacific_Bougainville[] ACE_TIME_PROGMEM = 12 /*untilMonth*/, 28 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 11:00 - +11 { @@ -15591,7 +15591,7 @@ static const extended::ZoneEra kZoneEraPacific_Bougainville[] ACE_TIME_PROGMEM = 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -15626,7 +15626,7 @@ static const extended::ZoneEra kZoneEraPacific_Chatham[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -15661,7 +15661,7 @@ static const extended::ZoneEra kZoneEraPacific_Chuuk[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -15696,7 +15696,7 @@ static const extended::ZoneEra kZoneEraPacific_Easter[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -15731,7 +15731,7 @@ static const extended::ZoneEra kZoneEraPacific_Efate[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -15766,7 +15766,7 @@ static const extended::ZoneEra kZoneEraPacific_Enderbury[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -15801,7 +15801,7 @@ static const extended::ZoneEra kZoneEraPacific_Fakaofo[] ACE_TIME_PROGMEM = { 12 /*untilMonth*/, 30 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 13:00 - +13 { @@ -15813,7 +15813,7 @@ static const extended::ZoneEra kZoneEraPacific_Fakaofo[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -15848,7 +15848,7 @@ static const extended::ZoneEra kZoneEraPacific_Fiji[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -15883,7 +15883,7 @@ static const extended::ZoneEra kZoneEraPacific_Funafuti[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -15918,7 +15918,7 @@ static const extended::ZoneEra kZoneEraPacific_Galapagos[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -15953,7 +15953,7 @@ static const extended::ZoneEra kZoneEraPacific_Gambier[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -15988,7 +15988,7 @@ static const extended::ZoneEra kZoneEraPacific_Guadalcanal[] ACE_TIME_PROGMEM = 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -16023,7 +16023,7 @@ static const extended::ZoneEra kZoneEraPacific_Guam[] ACE_TIME_PROGMEM = { 12 /*untilMonth*/, 23 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 10:00 - ChST { @@ -16035,7 +16035,7 @@ static const extended::ZoneEra kZoneEraPacific_Guam[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -16070,7 +16070,7 @@ static const extended::ZoneEra kZoneEraPacific_Honolulu[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -16105,7 +16105,7 @@ static const extended::ZoneEra kZoneEraPacific_Kiritimati[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -16140,7 +16140,7 @@ static const extended::ZoneEra kZoneEraPacific_Kosrae[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 11:00 - +11 { @@ -16152,7 +16152,7 @@ static const extended::ZoneEra kZoneEraPacific_Kosrae[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -16187,7 +16187,7 @@ static const extended::ZoneEra kZoneEraPacific_Kwajalein[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -16222,7 +16222,7 @@ static const extended::ZoneEra kZoneEraPacific_Majuro[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -16257,7 +16257,7 @@ static const extended::ZoneEra kZoneEraPacific_Marquesas[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -16292,7 +16292,7 @@ static const extended::ZoneEra kZoneEraPacific_Nauru[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -16327,7 +16327,7 @@ static const extended::ZoneEra kZoneEraPacific_Niue[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -16362,7 +16362,7 @@ static const extended::ZoneEra kZoneEraPacific_Norfolk[] ACE_TIME_PROGMEM = { 10 /*untilMonth*/, 4 /*untilDay*/, 8 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 11:00 - +11 { @@ -16374,7 +16374,7 @@ static const extended::ZoneEra kZoneEraPacific_Norfolk[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -16409,7 +16409,7 @@ static const extended::ZoneEra kZoneEraPacific_Noumea[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -16444,7 +16444,7 @@ static const extended::ZoneEra kZoneEraPacific_Pago_Pago[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -16479,7 +16479,7 @@ static const extended::ZoneEra kZoneEraPacific_Palau[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -16514,7 +16514,7 @@ static const extended::ZoneEra kZoneEraPacific_Pitcairn[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -16549,7 +16549,7 @@ static const extended::ZoneEra kZoneEraPacific_Pohnpei[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -16584,7 +16584,7 @@ static const extended::ZoneEra kZoneEraPacific_Port_Moresby[] ACE_TIME_PROGMEM = 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -16619,7 +16619,7 @@ static const extended::ZoneEra kZoneEraPacific_Rarotonga[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -16654,7 +16654,7 @@ static const extended::ZoneEra kZoneEraPacific_Tahiti[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -16689,7 +16689,7 @@ static const extended::ZoneEra kZoneEraPacific_Tarawa[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -16724,7 +16724,7 @@ static const extended::ZoneEra kZoneEraPacific_Tongatapu[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, // 13:00 Tonga +13/+14 { @@ -16736,7 +16736,7 @@ static const extended::ZoneEra kZoneEraPacific_Tongatapu[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -16771,7 +16771,7 @@ static const extended::ZoneEra kZoneEraPacific_Wake[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -16806,7 +16806,7 @@ static const extended::ZoneEra kZoneEraPacific_Wallis[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; @@ -16841,7 +16841,7 @@ static const extended::ZoneEra kZoneEraWET[] ACE_TIME_PROGMEM = { 1 /*untilMonth*/, 1 /*untilDay*/, 0 /*untilTimeCode*/, - 'w' /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, }, }; diff --git a/tests/validation/ExtendedValidationUsingJavaTest/zonedbx2018g/zone_policies.cpp b/tests/validation/ExtendedValidationUsingJavaTest/zonedbx2018g/zone_policies.cpp index e963b178e..42ae09e99 100644 --- a/tests/validation/ExtendedValidationUsingJavaTest/zonedbx2018g/zone_policies.cpp +++ b/tests/validation/ExtendedValidationUsingJavaTest/zonedbx2018g/zone_policies.cpp @@ -34,7 +34,7 @@ static const extended::ZoneRule kZoneRulesAN[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -46,7 +46,7 @@ static const extended::ZoneRule kZoneRulesAN[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -58,7 +58,7 @@ static const extended::ZoneRule kZoneRulesAN[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -70,7 +70,7 @@ static const extended::ZoneRule kZoneRulesAN[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -82,7 +82,7 @@ static const extended::ZoneRule kZoneRulesAN[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -94,7 +94,7 @@ static const extended::ZoneRule kZoneRulesAN[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -106,7 +106,7 @@ static const extended::ZoneRule kZoneRulesAN[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -118,7 +118,7 @@ static const extended::ZoneRule kZoneRulesAN[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -130,7 +130,7 @@ static const extended::ZoneRule kZoneRulesAN[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -162,7 +162,7 @@ static const extended::ZoneRule kZoneRulesAQ[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -194,7 +194,7 @@ static const extended::ZoneRule kZoneRulesAS[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -206,7 +206,7 @@ static const extended::ZoneRule kZoneRulesAS[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -218,7 +218,7 @@ static const extended::ZoneRule kZoneRulesAS[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -230,7 +230,7 @@ static const extended::ZoneRule kZoneRulesAS[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 2 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -242,7 +242,7 @@ static const extended::ZoneRule kZoneRulesAS[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -254,7 +254,7 @@ static const extended::ZoneRule kZoneRulesAS[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -266,7 +266,7 @@ static const extended::ZoneRule kZoneRulesAS[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -298,7 +298,7 @@ static const extended::ZoneRule kZoneRulesAT[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -310,7 +310,7 @@ static const extended::ZoneRule kZoneRulesAT[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -322,7 +322,7 @@ static const extended::ZoneRule kZoneRulesAT[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -334,7 +334,7 @@ static const extended::ZoneRule kZoneRulesAT[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -346,7 +346,7 @@ static const extended::ZoneRule kZoneRulesAT[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -358,7 +358,7 @@ static const extended::ZoneRule kZoneRulesAT[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -370,7 +370,7 @@ static const extended::ZoneRule kZoneRulesAT[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -382,7 +382,7 @@ static const extended::ZoneRule kZoneRulesAT[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -414,7 +414,7 @@ static const extended::ZoneRule kZoneRulesAV[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -426,7 +426,7 @@ static const extended::ZoneRule kZoneRulesAV[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -438,7 +438,7 @@ static const extended::ZoneRule kZoneRulesAV[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -450,7 +450,7 @@ static const extended::ZoneRule kZoneRulesAV[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -462,7 +462,7 @@ static const extended::ZoneRule kZoneRulesAV[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -474,7 +474,7 @@ static const extended::ZoneRule kZoneRulesAV[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -486,7 +486,7 @@ static const extended::ZoneRule kZoneRulesAV[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -498,7 +498,7 @@ static const extended::ZoneRule kZoneRulesAV[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -510,7 +510,7 @@ static const extended::ZoneRule kZoneRulesAV[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -542,7 +542,7 @@ static const extended::ZoneRule kZoneRulesAW[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -554,7 +554,7 @@ static const extended::ZoneRule kZoneRulesAW[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 3 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -566,7 +566,7 @@ static const extended::ZoneRule kZoneRulesAW[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -578,7 +578,7 @@ static const extended::ZoneRule kZoneRulesAW[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -610,7 +610,7 @@ static const extended::ZoneRule kZoneRulesArg[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -622,7 +622,7 @@ static const extended::ZoneRule kZoneRulesArg[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -634,7 +634,7 @@ static const extended::ZoneRule kZoneRulesArg[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 3 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -646,7 +646,7 @@ static const extended::ZoneRule kZoneRulesArg[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 30 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -658,7 +658,7 @@ static const extended::ZoneRule kZoneRulesArg[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -670,7 +670,7 @@ static const extended::ZoneRule kZoneRulesArg[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -702,7 +702,7 @@ static const extended::ZoneRule kZoneRulesArmenia[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -714,7 +714,7 @@ static const extended::ZoneRule kZoneRulesArmenia[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -726,7 +726,7 @@ static const extended::ZoneRule kZoneRulesArmenia[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -758,7 +758,7 @@ static const extended::ZoneRule kZoneRulesAus[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -790,7 +790,7 @@ static const extended::ZoneRule kZoneRulesAzer[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 16 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -802,7 +802,7 @@ static const extended::ZoneRule kZoneRulesAzer[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 20 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -834,7 +834,7 @@ static const extended::ZoneRule kZoneRulesBarb[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 25 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -866,7 +866,7 @@ static const extended::ZoneRule kZoneRulesBelize[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 12 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 0 /*letter; "CST"*/, }, @@ -902,7 +902,7 @@ static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 11 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -914,7 +914,7 @@ static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -926,7 +926,7 @@ static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 3 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -938,7 +938,7 @@ static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 27 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -950,7 +950,7 @@ static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -962,7 +962,7 @@ static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -974,7 +974,7 @@ static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 3 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -986,7 +986,7 @@ static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 19 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -998,7 +998,7 @@ static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 2 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -1010,7 +1010,7 @@ static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 16 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -1022,7 +1022,7 @@ static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 5 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -1034,7 +1034,7 @@ static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 25 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1046,7 +1046,7 @@ static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -1058,7 +1058,7 @@ static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -1070,7 +1070,7 @@ static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1082,7 +1082,7 @@ static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1094,7 +1094,7 @@ static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1106,7 +1106,7 @@ static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1118,7 +1118,7 @@ static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1130,7 +1130,7 @@ static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -1142,7 +1142,7 @@ static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1154,7 +1154,7 @@ static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1166,7 +1166,7 @@ static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1178,7 +1178,7 @@ static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1190,7 +1190,7 @@ static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1202,7 +1202,7 @@ static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1214,7 +1214,7 @@ static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1226,7 +1226,7 @@ static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1258,7 +1258,7 @@ static const extended::ZoneRule kZoneRulesC_Eur[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1270,7 +1270,7 @@ static const extended::ZoneRule kZoneRulesC_Eur[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -1282,7 +1282,7 @@ static const extended::ZoneRule kZoneRulesC_Eur[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1314,7 +1314,7 @@ static const extended::ZoneRule kZoneRulesCO[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 4 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1346,7 +1346,7 @@ static const extended::ZoneRule kZoneRulesCR[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -1378,7 +1378,7 @@ static const extended::ZoneRule kZoneRulesCanada[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -1390,7 +1390,7 @@ static const extended::ZoneRule kZoneRulesCanada[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -1402,7 +1402,7 @@ static const extended::ZoneRule kZoneRulesCanada[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -1414,7 +1414,7 @@ static const extended::ZoneRule kZoneRulesCanada[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -1426,7 +1426,7 @@ static const extended::ZoneRule kZoneRulesCanada[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -1458,7 +1458,7 @@ static const extended::ZoneRule kZoneRulesChatham[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 11 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -1470,7 +1470,7 @@ static const extended::ZoneRule kZoneRulesChatham[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 11 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -1482,7 +1482,7 @@ static const extended::ZoneRule kZoneRulesChatham[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 11 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1494,7 +1494,7 @@ static const extended::ZoneRule kZoneRulesChatham[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 11 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -1506,7 +1506,7 @@ static const extended::ZoneRule kZoneRulesChatham[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 11 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1538,7 +1538,7 @@ static const extended::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 27 /*onDayOfMonth*/, 16 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -1550,7 +1550,7 @@ static const extended::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 4 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1562,7 +1562,7 @@ static const extended::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 9 /*onDayOfMonth*/, 16 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -1574,7 +1574,7 @@ static const extended::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 9 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1586,7 +1586,7 @@ static const extended::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 30 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1598,7 +1598,7 @@ static const extended::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 9 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1610,7 +1610,7 @@ static const extended::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1622,7 +1622,7 @@ static const extended::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 2 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1634,7 +1634,7 @@ static const extended::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 16 /*onDayOfMonth*/, 16 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -1646,7 +1646,7 @@ static const extended::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 23 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1658,7 +1658,7 @@ static const extended::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 2 /*onDayOfMonth*/, 16 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -1670,7 +1670,7 @@ static const extended::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 9 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1682,7 +1682,7 @@ static const extended::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 9 /*onDayOfMonth*/, 16 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -1694,7 +1694,7 @@ static const extended::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 2 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1706,7 +1706,7 @@ static const extended::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 2 /*onDayOfMonth*/, 16 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -1738,7 +1738,7 @@ static const extended::ZoneRule kZoneRulesCook[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1770,7 +1770,7 @@ static const extended::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 12 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -1782,7 +1782,7 @@ static const extended::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -1794,7 +1794,7 @@ static const extended::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -1806,7 +1806,7 @@ static const extended::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -1818,7 +1818,7 @@ static const extended::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -1830,7 +1830,7 @@ static const extended::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -1842,7 +1842,7 @@ static const extended::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -1854,7 +1854,7 @@ static const extended::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -1866,7 +1866,7 @@ static const extended::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -1878,7 +1878,7 @@ static const extended::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -1890,7 +1890,7 @@ static const extended::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 13 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -1902,7 +1902,7 @@ static const extended::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -1914,7 +1914,7 @@ static const extended::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -1926,7 +1926,7 @@ static const extended::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -1958,7 +1958,7 @@ static const extended::ZoneRule kZoneRulesDhaka[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -1970,7 +1970,7 @@ static const extended::ZoneRule kZoneRulesDhaka[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 19 /*onDayOfMonth*/, 92 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -1982,7 +1982,7 @@ static const extended::ZoneRule kZoneRulesDhaka[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 31 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2014,7 +2014,7 @@ static const extended::ZoneRule kZoneRulesE_EurAsia[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -2026,7 +2026,7 @@ static const extended::ZoneRule kZoneRulesE_EurAsia[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2038,7 +2038,7 @@ static const extended::ZoneRule kZoneRulesE_EurAsia[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2070,7 +2070,7 @@ static const extended::ZoneRule kZoneRulesEU[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2082,7 +2082,7 @@ static const extended::ZoneRule kZoneRulesEU[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -2094,7 +2094,7 @@ static const extended::ZoneRule kZoneRulesEU[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2126,7 +2126,7 @@ static const extended::ZoneRule kZoneRulesEUAsia[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -2138,7 +2138,7 @@ static const extended::ZoneRule kZoneRulesEUAsia[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2150,7 +2150,7 @@ static const extended::ZoneRule kZoneRulesEUAsia[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2182,7 +2182,7 @@ static const extended::ZoneRule kZoneRulesEcuador[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 5 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2214,7 +2214,7 @@ static const extended::ZoneRule kZoneRulesEgypt[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2226,7 +2226,7 @@ static const extended::ZoneRule kZoneRulesEgypt[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -2238,7 +2238,7 @@ static const extended::ZoneRule kZoneRulesEgypt[] ACE_TIME_PROGMEM = { 4 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2250,7 +2250,7 @@ static const extended::ZoneRule kZoneRulesEgypt[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2262,7 +2262,7 @@ static const extended::ZoneRule kZoneRulesEgypt[] ACE_TIME_PROGMEM = { 4 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2274,7 +2274,7 @@ static const extended::ZoneRule kZoneRulesEgypt[] ACE_TIME_PROGMEM = { 4 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2286,7 +2286,7 @@ static const extended::ZoneRule kZoneRulesEgypt[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2298,7 +2298,7 @@ static const extended::ZoneRule kZoneRulesEgypt[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 10 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2310,7 +2310,7 @@ static const extended::ZoneRule kZoneRulesEgypt[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 9 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -2322,7 +2322,7 @@ static const extended::ZoneRule kZoneRulesEgypt[] ACE_TIME_PROGMEM = { 4 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2334,7 +2334,7 @@ static const extended::ZoneRule kZoneRulesEgypt[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -2346,7 +2346,7 @@ static const extended::ZoneRule kZoneRulesEgypt[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 26 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2358,7 +2358,7 @@ static const extended::ZoneRule kZoneRulesEgypt[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 31 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -2370,7 +2370,7 @@ static const extended::ZoneRule kZoneRulesEgypt[] ACE_TIME_PROGMEM = { 4 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2402,7 +2402,7 @@ static const extended::ZoneRule kZoneRulesEire[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2414,7 +2414,7 @@ static const extended::ZoneRule kZoneRulesEire[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, -4 /*deltaCode*/, '-' /*letter*/, }, @@ -2426,7 +2426,7 @@ static const extended::ZoneRule kZoneRulesEire[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, -4 /*deltaCode*/, '-' /*letter*/, }, @@ -2458,7 +2458,7 @@ static const extended::ZoneRule kZoneRulesFalk[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2470,7 +2470,7 @@ static const extended::ZoneRule kZoneRulesFalk[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 9 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -2482,7 +2482,7 @@ static const extended::ZoneRule kZoneRulesFalk[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 16 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2494,7 +2494,7 @@ static const extended::ZoneRule kZoneRulesFalk[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2506,7 +2506,7 @@ static const extended::ZoneRule kZoneRulesFalk[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -2538,7 +2538,7 @@ static const extended::ZoneRule kZoneRulesFiji[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -2550,7 +2550,7 @@ static const extended::ZoneRule kZoneRulesFiji[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2562,7 +2562,7 @@ static const extended::ZoneRule kZoneRulesFiji[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 29 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -2574,7 +2574,7 @@ static const extended::ZoneRule kZoneRulesFiji[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2586,7 +2586,7 @@ static const extended::ZoneRule kZoneRulesFiji[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -2598,7 +2598,7 @@ static const extended::ZoneRule kZoneRulesFiji[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2610,7 +2610,7 @@ static const extended::ZoneRule kZoneRulesFiji[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 18 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2622,7 +2622,7 @@ static const extended::ZoneRule kZoneRulesFiji[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 18 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2634,7 +2634,7 @@ static const extended::ZoneRule kZoneRulesFiji[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -2646,7 +2646,7 @@ static const extended::ZoneRule kZoneRulesFiji[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 13 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2678,7 +2678,7 @@ static const extended::ZoneRule kZoneRulesGhana[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 31 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2710,7 +2710,7 @@ static const extended::ZoneRule kZoneRulesGuat[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 7 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -2722,7 +2722,7 @@ static const extended::ZoneRule kZoneRulesGuat[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 30 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -2734,7 +2734,7 @@ static const extended::ZoneRule kZoneRulesGuat[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -2766,7 +2766,7 @@ static const extended::ZoneRule kZoneRulesHK[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 16 /*onDayOfMonth*/, 14 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -2798,7 +2798,7 @@ static const extended::ZoneRule kZoneRulesHaiti[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -2810,7 +2810,7 @@ static const extended::ZoneRule kZoneRulesHaiti[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -2822,7 +2822,7 @@ static const extended::ZoneRule kZoneRulesHaiti[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -2834,7 +2834,7 @@ static const extended::ZoneRule kZoneRulesHaiti[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -2846,7 +2846,7 @@ static const extended::ZoneRule kZoneRulesHaiti[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -2858,7 +2858,7 @@ static const extended::ZoneRule kZoneRulesHaiti[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -2870,7 +2870,7 @@ static const extended::ZoneRule kZoneRulesHaiti[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -2902,7 +2902,7 @@ static const extended::ZoneRule kZoneRulesHoliday[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -2934,7 +2934,7 @@ static const extended::ZoneRule kZoneRulesHond[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -2946,7 +2946,7 @@ static const extended::ZoneRule kZoneRulesHond[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -2958,7 +2958,7 @@ static const extended::ZoneRule kZoneRulesHond[] ACE_TIME_PROGMEM = { 1 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -2990,7 +2990,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3002,7 +3002,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3014,7 +3014,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3026,7 +3026,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3038,7 +3038,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3050,7 +3050,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3062,7 +3062,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3074,7 +3074,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3086,7 +3086,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3098,7 +3098,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3110,7 +3110,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3122,7 +3122,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3134,7 +3134,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3146,7 +3146,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3158,7 +3158,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3170,7 +3170,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3182,7 +3182,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3194,7 +3194,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3206,7 +3206,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3218,7 +3218,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3230,7 +3230,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3242,7 +3242,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3254,7 +3254,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3266,7 +3266,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3278,7 +3278,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3290,7 +3290,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3302,7 +3302,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3314,7 +3314,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3326,7 +3326,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3338,7 +3338,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3350,7 +3350,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3362,7 +3362,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3374,7 +3374,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3386,7 +3386,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3398,7 +3398,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3410,7 +3410,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3422,7 +3422,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3434,7 +3434,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3446,7 +3446,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3458,7 +3458,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3470,7 +3470,7 @@ static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3502,7 +3502,7 @@ static const extended::ZoneRule kZoneRulesIraq[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3514,7 +3514,7 @@ static const extended::ZoneRule kZoneRulesIraq[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3526,7 +3526,7 @@ static const extended::ZoneRule kZoneRulesIraq[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3558,7 +3558,7 @@ static const extended::ZoneRule kZoneRulesJapan[] ACE_TIME_PROGMEM = { 6 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 100 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -3590,7 +3590,7 @@ static const extended::ZoneRule kZoneRulesJordan[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3602,7 +3602,7 @@ static const extended::ZoneRule kZoneRulesJordan[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -3614,7 +3614,7 @@ static const extended::ZoneRule kZoneRulesJordan[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3626,7 +3626,7 @@ static const extended::ZoneRule kZoneRulesJordan[] ACE_TIME_PROGMEM = { 4 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -3638,7 +3638,7 @@ static const extended::ZoneRule kZoneRulesJordan[] ACE_TIME_PROGMEM = { 4 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -3650,7 +3650,7 @@ static const extended::ZoneRule kZoneRulesJordan[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 24 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3662,7 +3662,7 @@ static const extended::ZoneRule kZoneRulesJordan[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3674,7 +3674,7 @@ static const extended::ZoneRule kZoneRulesJordan[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3686,7 +3686,7 @@ static const extended::ZoneRule kZoneRulesJordan[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3698,7 +3698,7 @@ static const extended::ZoneRule kZoneRulesJordan[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3710,7 +3710,7 @@ static const extended::ZoneRule kZoneRulesJordan[] ACE_TIME_PROGMEM = { 4 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -3722,7 +3722,7 @@ static const extended::ZoneRule kZoneRulesJordan[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3754,7 +3754,7 @@ static const extended::ZoneRule kZoneRulesKyrgyz[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3766,7 +3766,7 @@ static const extended::ZoneRule kZoneRulesKyrgyz[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 10 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -3778,7 +3778,7 @@ static const extended::ZoneRule kZoneRulesKyrgyz[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 10 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3810,7 +3810,7 @@ static const extended::ZoneRule kZoneRulesLH[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 2 /*deltaCode*/, '-' /*letter*/, }, @@ -3822,7 +3822,7 @@ static const extended::ZoneRule kZoneRulesLH[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3834,7 +3834,7 @@ static const extended::ZoneRule kZoneRulesLH[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3846,7 +3846,7 @@ static const extended::ZoneRule kZoneRulesLH[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 2 /*deltaCode*/, '-' /*letter*/, }, @@ -3858,7 +3858,7 @@ static const extended::ZoneRule kZoneRulesLH[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 2 /*deltaCode*/, '-' /*letter*/, }, @@ -3870,7 +3870,7 @@ static const extended::ZoneRule kZoneRulesLH[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3882,7 +3882,7 @@ static const extended::ZoneRule kZoneRulesLH[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3894,7 +3894,7 @@ static const extended::ZoneRule kZoneRulesLH[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3906,7 +3906,7 @@ static const extended::ZoneRule kZoneRulesLH[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 2 /*deltaCode*/, '-' /*letter*/, }, @@ -3938,7 +3938,7 @@ static const extended::ZoneRule kZoneRulesLebanon[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -3950,7 +3950,7 @@ static const extended::ZoneRule kZoneRulesLebanon[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3962,7 +3962,7 @@ static const extended::ZoneRule kZoneRulesLebanon[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -3994,7 +3994,7 @@ static const extended::ZoneRule kZoneRulesLibya[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 4 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4006,7 +4006,7 @@ static const extended::ZoneRule kZoneRulesLibya[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -4018,7 +4018,7 @@ static const extended::ZoneRule kZoneRulesLibya[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4050,7 +4050,7 @@ static const extended::ZoneRule kZoneRulesMacau[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 16 /*onDayOfMonth*/, 14 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -4082,7 +4082,7 @@ static const extended::ZoneRule kZoneRulesMauritius[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4094,7 +4094,7 @@ static const extended::ZoneRule kZoneRulesMauritius[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -4106,7 +4106,7 @@ static const extended::ZoneRule kZoneRulesMauritius[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4138,7 +4138,7 @@ static const extended::ZoneRule kZoneRulesMexico[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 30 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -4150,7 +4150,7 @@ static const extended::ZoneRule kZoneRulesMexico[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -4162,7 +4162,7 @@ static const extended::ZoneRule kZoneRulesMexico[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -4174,7 +4174,7 @@ static const extended::ZoneRule kZoneRulesMexico[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -4186,7 +4186,7 @@ static const extended::ZoneRule kZoneRulesMexico[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -4198,7 +4198,7 @@ static const extended::ZoneRule kZoneRulesMexico[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -4210,7 +4210,7 @@ static const extended::ZoneRule kZoneRulesMexico[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -4242,7 +4242,7 @@ static const extended::ZoneRule kZoneRulesMoldova[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -4254,7 +4254,7 @@ static const extended::ZoneRule kZoneRulesMoldova[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4286,7 +4286,7 @@ static const extended::ZoneRule kZoneRulesMoncton[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -4298,7 +4298,7 @@ static const extended::ZoneRule kZoneRulesMoncton[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -4310,7 +4310,7 @@ static const extended::ZoneRule kZoneRulesMoncton[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -4342,7 +4342,7 @@ static const extended::ZoneRule kZoneRulesMongol[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4354,7 +4354,7 @@ static const extended::ZoneRule kZoneRulesMongol[] ACE_TIME_PROGMEM = { 6 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -4366,7 +4366,7 @@ static const extended::ZoneRule kZoneRulesMongol[] ACE_TIME_PROGMEM = { 6 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4378,7 +4378,7 @@ static const extended::ZoneRule kZoneRulesMongol[] ACE_TIME_PROGMEM = { 6 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -4390,7 +4390,7 @@ static const extended::ZoneRule kZoneRulesMongol[] ACE_TIME_PROGMEM = { 6 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -4402,7 +4402,7 @@ static const extended::ZoneRule kZoneRulesMongol[] ACE_TIME_PROGMEM = { 6 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4434,7 +4434,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 4 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4446,7 +4446,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -4458,7 +4458,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4470,7 +4470,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -4482,7 +4482,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4494,7 +4494,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 2 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -4506,7 +4506,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4518,7 +4518,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 3 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -4530,7 +4530,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 31 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4542,7 +4542,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -4554,7 +4554,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4566,7 +4566,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 20 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -4578,7 +4578,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 30 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4590,7 +4590,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 7 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4602,7 +4602,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 10 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -4614,7 +4614,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4626,7 +4626,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -4638,7 +4638,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 28 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4650,7 +4650,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 2 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -4662,7 +4662,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 14 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4674,7 +4674,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 19 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -4686,7 +4686,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 5 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4698,7 +4698,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 10 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -4710,7 +4710,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4722,7 +4722,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 2 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -4734,7 +4734,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 13 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4746,7 +4746,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 17 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -4778,7 +4778,7 @@ static const extended::ZoneRule kZoneRulesNC[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 2 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -4810,7 +4810,7 @@ static const extended::ZoneRule kZoneRulesNT_YK[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -4822,7 +4822,7 @@ static const extended::ZoneRule kZoneRulesNT_YK[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -4834,7 +4834,7 @@ static const extended::ZoneRule kZoneRulesNT_YK[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -4866,7 +4866,7 @@ static const extended::ZoneRule kZoneRulesNZ[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -4878,7 +4878,7 @@ static const extended::ZoneRule kZoneRulesNZ[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -4890,7 +4890,7 @@ static const extended::ZoneRule kZoneRulesNZ[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -4902,7 +4902,7 @@ static const extended::ZoneRule kZoneRulesNZ[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -4914,7 +4914,7 @@ static const extended::ZoneRule kZoneRulesNZ[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -4946,7 +4946,7 @@ static const extended::ZoneRule kZoneRulesNamibia[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, -4 /*deltaCode*/, 1 /*letter; "WAT"*/, }, @@ -4958,7 +4958,7 @@ static const extended::ZoneRule kZoneRulesNamibia[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 0 /*letter; "CAT"*/, }, @@ -4970,7 +4970,7 @@ static const extended::ZoneRule kZoneRulesNamibia[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, -4 /*deltaCode*/, 1 /*letter; "WAT"*/, }, @@ -5007,7 +5007,7 @@ static const extended::ZoneRule kZoneRulesNic[] ACE_TIME_PROGMEM = { 1 /*onDayOfWeek*/, 23 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -5019,7 +5019,7 @@ static const extended::ZoneRule kZoneRulesNic[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 10 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -5031,7 +5031,7 @@ static const extended::ZoneRule kZoneRulesNic[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -5043,7 +5043,7 @@ static const extended::ZoneRule kZoneRulesNic[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 30 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -5055,7 +5055,7 @@ static const extended::ZoneRule kZoneRulesNic[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -5087,7 +5087,7 @@ static const extended::ZoneRule kZoneRulesPRC[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 11 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -5119,7 +5119,7 @@ static const extended::ZoneRule kZoneRulesPakistan[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5131,7 +5131,7 @@ static const extended::ZoneRule kZoneRulesPakistan[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 2 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -5143,7 +5143,7 @@ static const extended::ZoneRule kZoneRulesPakistan[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 2 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5155,7 +5155,7 @@ static const extended::ZoneRule kZoneRulesPakistan[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -5167,7 +5167,7 @@ static const extended::ZoneRule kZoneRulesPakistan[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5179,7 +5179,7 @@ static const extended::ZoneRule kZoneRulesPakistan[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -5211,7 +5211,7 @@ static const extended::ZoneRule kZoneRulesPalestine[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5223,7 +5223,7 @@ static const extended::ZoneRule kZoneRulesPalestine[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -5235,7 +5235,7 @@ static const extended::ZoneRule kZoneRulesPalestine[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5247,7 +5247,7 @@ static const extended::ZoneRule kZoneRulesPalestine[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5259,7 +5259,7 @@ static const extended::ZoneRule kZoneRulesPalestine[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 4 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5271,7 +5271,7 @@ static const extended::ZoneRule kZoneRulesPalestine[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -5283,7 +5283,7 @@ static const extended::ZoneRule kZoneRulesPalestine[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5295,7 +5295,7 @@ static const extended::ZoneRule kZoneRulesPalestine[] ACE_TIME_PROGMEM = { 4 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5307,7 +5307,7 @@ static const extended::ZoneRule kZoneRulesPalestine[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -5319,7 +5319,7 @@ static const extended::ZoneRule kZoneRulesPalestine[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5331,7 +5331,7 @@ static const extended::ZoneRule kZoneRulesPalestine[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5343,7 +5343,7 @@ static const extended::ZoneRule kZoneRulesPalestine[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 26 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -5355,7 +5355,7 @@ static const extended::ZoneRule kZoneRulesPalestine[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 11 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5367,7 +5367,7 @@ static const extended::ZoneRule kZoneRulesPalestine[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -5379,7 +5379,7 @@ static const extended::ZoneRule kZoneRulesPalestine[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5391,7 +5391,7 @@ static const extended::ZoneRule kZoneRulesPalestine[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 30 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -5403,7 +5403,7 @@ static const extended::ZoneRule kZoneRulesPalestine[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 30 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5415,7 +5415,7 @@ static const extended::ZoneRule kZoneRulesPalestine[] ACE_TIME_PROGMEM = { 4 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -5427,7 +5427,7 @@ static const extended::ZoneRule kZoneRulesPalestine[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5439,7 +5439,7 @@ static const extended::ZoneRule kZoneRulesPalestine[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5451,7 +5451,7 @@ static const extended::ZoneRule kZoneRulesPalestine[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5463,7 +5463,7 @@ static const extended::ZoneRule kZoneRulesPalestine[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 96 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -5475,7 +5475,7 @@ static const extended::ZoneRule kZoneRulesPalestine[] ACE_TIME_PROGMEM = { 6 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -5487,7 +5487,7 @@ static const extended::ZoneRule kZoneRulesPalestine[] ACE_TIME_PROGMEM = { 6 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5519,7 +5519,7 @@ static const extended::ZoneRule kZoneRulesPara[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -5531,7 +5531,7 @@ static const extended::ZoneRule kZoneRulesPara[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5543,7 +5543,7 @@ static const extended::ZoneRule kZoneRulesPara[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5555,7 +5555,7 @@ static const extended::ZoneRule kZoneRulesPara[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5567,7 +5567,7 @@ static const extended::ZoneRule kZoneRulesPara[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -5579,7 +5579,7 @@ static const extended::ZoneRule kZoneRulesPara[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -5591,7 +5591,7 @@ static const extended::ZoneRule kZoneRulesPara[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5603,7 +5603,7 @@ static const extended::ZoneRule kZoneRulesPara[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -5615,7 +5615,7 @@ static const extended::ZoneRule kZoneRulesPara[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5627,7 +5627,7 @@ static const extended::ZoneRule kZoneRulesPara[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5659,7 +5659,7 @@ static const extended::ZoneRule kZoneRulesPeru[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5691,7 +5691,7 @@ static const extended::ZoneRule kZoneRulesPhil[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 21 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -5723,7 +5723,7 @@ static const extended::ZoneRule kZoneRulesROK[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -5755,7 +5755,7 @@ static const extended::ZoneRule kZoneRulesRussia[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5767,7 +5767,7 @@ static const extended::ZoneRule kZoneRulesRussia[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -5779,7 +5779,7 @@ static const extended::ZoneRule kZoneRulesRussia[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5811,7 +5811,7 @@ static const extended::ZoneRule kZoneRulesRussiaAsia[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5823,7 +5823,7 @@ static const extended::ZoneRule kZoneRulesRussiaAsia[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -5835,7 +5835,7 @@ static const extended::ZoneRule kZoneRulesRussiaAsia[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5867,7 +5867,7 @@ static const extended::ZoneRule kZoneRulesSA[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5899,7 +5899,7 @@ static const extended::ZoneRule kZoneRulesSalv[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -5931,7 +5931,7 @@ static const extended::ZoneRule kZoneRulesSanLuis[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5943,7 +5943,7 @@ static const extended::ZoneRule kZoneRulesSanLuis[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -5955,7 +5955,7 @@ static const extended::ZoneRule kZoneRulesSanLuis[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -5987,7 +5987,7 @@ static const extended::ZoneRule kZoneRulesStJohns[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -5999,7 +5999,7 @@ static const extended::ZoneRule kZoneRulesStJohns[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 8 /*deltaCode*/, 0 /*letter; "DD"*/, }, @@ -6011,7 +6011,7 @@ static const extended::ZoneRule kZoneRulesStJohns[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -6023,7 +6023,7 @@ static const extended::ZoneRule kZoneRulesStJohns[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -6035,7 +6035,7 @@ static const extended::ZoneRule kZoneRulesStJohns[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -6071,7 +6071,7 @@ static const extended::ZoneRule kZoneRulesSudan[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -6103,7 +6103,7 @@ static const extended::ZoneRule kZoneRulesSyria[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -6115,7 +6115,7 @@ static const extended::ZoneRule kZoneRulesSyria[] ACE_TIME_PROGMEM = { 1 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -6127,7 +6127,7 @@ static const extended::ZoneRule kZoneRulesSyria[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -6139,7 +6139,7 @@ static const extended::ZoneRule kZoneRulesSyria[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -6151,7 +6151,7 @@ static const extended::ZoneRule kZoneRulesSyria[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -6163,7 +6163,7 @@ static const extended::ZoneRule kZoneRulesSyria[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -6175,7 +6175,7 @@ static const extended::ZoneRule kZoneRulesSyria[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -6187,7 +6187,7 @@ static const extended::ZoneRule kZoneRulesSyria[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -6199,7 +6199,7 @@ static const extended::ZoneRule kZoneRulesSyria[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -6211,7 +6211,7 @@ static const extended::ZoneRule kZoneRulesSyria[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -6223,7 +6223,7 @@ static const extended::ZoneRule kZoneRulesSyria[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -6235,7 +6235,7 @@ static const extended::ZoneRule kZoneRulesSyria[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -6267,7 +6267,7 @@ static const extended::ZoneRule kZoneRulesTaiwan[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -6299,7 +6299,7 @@ static const extended::ZoneRule kZoneRulesThule[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -6311,7 +6311,7 @@ static const extended::ZoneRule kZoneRulesThule[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -6323,7 +6323,7 @@ static const extended::ZoneRule kZoneRulesThule[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -6335,7 +6335,7 @@ static const extended::ZoneRule kZoneRulesThule[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -6347,7 +6347,7 @@ static const extended::ZoneRule kZoneRulesThule[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -6379,7 +6379,7 @@ static const extended::ZoneRule kZoneRulesTonga[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -6391,7 +6391,7 @@ static const extended::ZoneRule kZoneRulesTonga[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 7 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -6403,7 +6403,7 @@ static const extended::ZoneRule kZoneRulesTonga[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 19 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -6415,7 +6415,7 @@ static const extended::ZoneRule kZoneRulesTonga[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -6427,7 +6427,7 @@ static const extended::ZoneRule kZoneRulesTonga[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -6439,7 +6439,7 @@ static const extended::ZoneRule kZoneRulesTonga[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -6451,7 +6451,7 @@ static const extended::ZoneRule kZoneRulesTonga[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -6483,7 +6483,7 @@ static const extended::ZoneRule kZoneRulesTroll[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 0 /*letter; "+00"*/, }, @@ -6495,7 +6495,7 @@ static const extended::ZoneRule kZoneRulesTroll[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 8 /*deltaCode*/, 1 /*letter; "+02"*/, }, @@ -6507,7 +6507,7 @@ static const extended::ZoneRule kZoneRulesTroll[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'u' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_U /*atTimeModifier*/, 0 /*deltaCode*/, 0 /*letter; "+00"*/, }, @@ -6544,7 +6544,7 @@ static const extended::ZoneRule kZoneRulesTunisia[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -6556,7 +6556,7 @@ static const extended::ZoneRule kZoneRulesTunisia[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -6568,7 +6568,7 @@ static const extended::ZoneRule kZoneRulesTunisia[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 30 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -6580,7 +6580,7 @@ static const extended::ZoneRule kZoneRulesTunisia[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -6592,7 +6592,7 @@ static const extended::ZoneRule kZoneRulesTunisia[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -6624,7 +6624,7 @@ static const extended::ZoneRule kZoneRulesTurkey[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -6636,7 +6636,7 @@ static const extended::ZoneRule kZoneRulesTurkey[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -6648,7 +6648,7 @@ static const extended::ZoneRule kZoneRulesTurkey[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -6680,7 +6680,7 @@ static const extended::ZoneRule kZoneRulesUS[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -6692,7 +6692,7 @@ static const extended::ZoneRule kZoneRulesUS[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -6704,7 +6704,7 @@ static const extended::ZoneRule kZoneRulesUS[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -6716,7 +6716,7 @@ static const extended::ZoneRule kZoneRulesUS[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -6728,7 +6728,7 @@ static const extended::ZoneRule kZoneRulesUS[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -6760,7 +6760,7 @@ static const extended::ZoneRule kZoneRulesUruguay[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 28 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -6772,7 +6772,7 @@ static const extended::ZoneRule kZoneRulesUruguay[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 19 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -6784,7 +6784,7 @@ static const extended::ZoneRule kZoneRulesUruguay[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 27 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -6796,7 +6796,7 @@ static const extended::ZoneRule kZoneRulesUruguay[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 9 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -6808,7 +6808,7 @@ static const extended::ZoneRule kZoneRulesUruguay[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -6820,7 +6820,7 @@ static const extended::ZoneRule kZoneRulesUruguay[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -6852,7 +6852,7 @@ static const extended::ZoneRule kZoneRulesVanuatu[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 23 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -6884,7 +6884,7 @@ static const extended::ZoneRule kZoneRulesWS[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -6896,7 +6896,7 @@ static const extended::ZoneRule kZoneRulesWS[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -6908,7 +6908,7 @@ static const extended::ZoneRule kZoneRulesWS[] ACE_TIME_PROGMEM = { 6 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 16 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -6920,7 +6920,7 @@ static const extended::ZoneRule kZoneRulesWS[] ACE_TIME_PROGMEM = { 6 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -6932,7 +6932,7 @@ static const extended::ZoneRule kZoneRulesWS[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 16 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, '-' /*letter*/, }, @@ -6944,7 +6944,7 @@ static const extended::ZoneRule kZoneRulesWS[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 12 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, '-' /*letter*/, }, @@ -6976,7 +6976,7 @@ static const extended::ZoneRule kZoneRulesWinn[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -6988,7 +6988,7 @@ static const extended::ZoneRule kZoneRulesWinn[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -7000,7 +7000,7 @@ static const extended::ZoneRule kZoneRulesWinn[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 's' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_S /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -7032,7 +7032,7 @@ static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 6 /*onDayOfMonth*/, 0 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -7044,7 +7044,7 @@ static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 2 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -7056,7 +7056,7 @@ static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 3 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -7068,7 +7068,7 @@ static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 14 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -7080,7 +7080,7 @@ static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 6 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -7092,7 +7092,7 @@ static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 9 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -7104,7 +7104,7 @@ static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 24 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -7116,7 +7116,7 @@ static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 29 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -7128,7 +7128,7 @@ static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 7 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -7140,7 +7140,7 @@ static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 28 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -7152,7 +7152,7 @@ static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 3 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -7164,7 +7164,7 @@ static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 7 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -7176,7 +7176,7 @@ static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 22 /*onDayOfMonth*/, 4 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -7188,7 +7188,7 @@ static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -7200,7 +7200,7 @@ static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 9 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -7212,7 +7212,7 @@ static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 26 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -7224,7 +7224,7 @@ static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -7236,7 +7236,7 @@ static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 16 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -7248,7 +7248,7 @@ static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 5 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -7260,7 +7260,7 @@ static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 27 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -7272,7 +7272,7 @@ static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 12 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -7284,7 +7284,7 @@ static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -7296,7 +7296,7 @@ static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 2 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -7308,7 +7308,7 @@ static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 26 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -7320,7 +7320,7 @@ static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 23 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -7332,7 +7332,7 @@ static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 5 /*onDayOfWeek*/, 23 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -7344,7 +7344,7 @@ static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 8 /*atTimeCode*/, - 'w' /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, From 677cb8fcf7abf4e51c6892781182be78006f01e3 Mon Sep 17 00:00:00 2001 From: Brian Park Date: Fri, 9 Aug 2019 09:24:17 -0700 Subject: [PATCH 08/55] src: Increase time resolution of TimeOffset to 1-minute from 15-minute using int16_t instead of int8_t; increases program size of WorldClock by 216 bytes, but I think worth it --- src/ace_time/TimeOffset.cpp | 2 +- src/ace_time/TimeOffset.h | 98 +++++++++++++------------ src/ace_time/TimeZone.cpp | 12 +-- src/ace_time/TimeZone.h | 46 ++++++------ src/ace_time/time_offset_mutation.h | 6 +- tests/TimeOffsetTest/TimeOffsetTest.ino | 12 +-- 6 files changed, 91 insertions(+), 85 deletions(-) diff --git a/src/ace_time/TimeOffset.cpp b/src/ace_time/TimeOffset.cpp index e4798e530..29c049b26 100644 --- a/src/ace_time/TimeOffset.cpp +++ b/src/ace_time/TimeOffset.cpp @@ -17,7 +17,7 @@ void TimeOffset::printTo(Print& printer) const { int8_t minute; toHourMinute(hour, minute); - if (mOffsetCode < 0) { + if (mMinutes < 0) { printer.print('-'); hour = -hour; minute = -minute; diff --git a/src/ace_time/TimeOffset.h b/src/ace_time/TimeOffset.h index c2012ad24..d89243dfa 100644 --- a/src/ace_time/TimeOffset.h +++ b/src/ace_time/TimeOffset.h @@ -12,9 +12,9 @@ class Print; namespace ace_time { -// These functions need to set the mOffsetCode and it seemed inefficient to go -// through the factory method and assignment operator, so I expose -// setOffsetCode() to them for efficiency. If the compiler is smart enough to +// These functions need to set the mMinutes and it seemed inefficient to +// go through the factory method and assignment operator, so I expose +// setMinutes() to them for efficiency. If the compiler is smart enough to // optimize away the assignment operator, then we could remove these friend // declarations and just use the forOffsetCode() factory method instead. I // haven't looked into this. @@ -33,6 +33,7 @@ void increment15Minutes(TimeOffset& offset); * @code * TimeOffset tz = TimeOffset::forHour(-8); * TimeOffset tz = TimeOffset::forHourMinute(-8, 0); + * TimeOffset tz = TimeOffset::forMinutes(-480); * TimeOffset tz = TimeOffset::forOffsetString("-08:00"); * @endcode * @@ -41,15 +42,17 @@ void increment15Minutes(TimeOffset& offset); * TimeOffset offset; * @endcode * - * According to https://en.wikipedia.org/wiki/List_of_UTC_time_offsets, all - * time zones currently in use occur at 15 minute boundaries, and the smallest - * time zone is UTC-12:00 and the biggest time zone is UTC+14:00. Therefore, we - * can encode all currently used time zones as integer multiples of 15-minute - * offsets from UTC. This allows the TimeOffset to be stored as a single 8-bit - * signed integer. For the most part, the internal implementation of this class - * does not leak out to the outside world, so it should be relatively easy to - * change its implementation to a int16_t type to support 1-minute granularity - * instead of 15-minute granularity. + * The current implementation has a resolution of 1-minute (using an internal + * int16_t type). The previous implementation (< v0.7) had a resolution of + * 15-minutes (using an internal int8_t type) because that was sufficient to + * handle all current timezones for years >= 2018 (determined by looking at + * https://en.wikipedia.org/wiki/List_of_UTC_time_offsets, and the TZ Database + * zonefiles itself through the tzcompiler.py script). However, 15-minute + * resolution is not sufficient to handle a handful of timezones in the past + * (years 2000 to 2011 or so). So I changed the implementation to use 2 bytes + * to handle 1-minute resolution. Some residual methods handle "offsetCode" + * because the zoneinfo files in zonedb/ and zonedbx/ are encoded using a + * int8_t type to save flash memory space. * * This class does NOT know about the TZ Database (aka Olson database) * https://en.wikipedia.org/wiki/Tz_database. That functionality is implemented @@ -60,33 +63,34 @@ class TimeOffset { /** Sentinel value that represents an error. */ static const int8_t kErrorCode = INT8_MIN; + /** Sentinel value that represents an error. */ + static const int16_t kErrorMinutes = INT16_MIN; + + // TODO: Change this to forHours() for consistency with forMinutes()? /** * Create TimeOffset with the corresponding hour offset. For example, * -08:00 is 'forHour(-8)'. */ static TimeOffset forHour(int8_t hour) { - return TimeOffset(hour * 4); + return TimeOffset::forMinutes(hour * 60); } /** * Create TimeOffset from (hour, minute) offset. If the offset is negative, * then the negative sign must be added to both the hour and minute * components. This allows a negative offset of less than -01:00 to be - * created. The 'minute' must be in multiples of 15-minutes. For example, - * -07:30 is created by 'forHourMinute(-7, -30)' (not 'forHourMinute(-7, - * 30), and -00:15 is created by 'forHourMinute(0, -15)'. + * created. For example, -07:30 is created by 'forHourMinute(-7, -30)' (not + * 'forHourMinute(-7, 30), and -00:15 is created by 'forHourMinute(0, + * -15)'. */ static TimeOffset forHourMinute(int8_t hour, int8_t minute) { - int8_t code = hour * 4 + minute / 15; - return TimeOffset(code); + int16_t minutes = hour * 60 + minute; + return TimeOffset(minutes); } - /** - * Create TimeOffset from minutes from 00:00. In the current implementation, - * the minutes is truncated to the 15-minute boundary towards 0. - */ + /** Create TimeOffset from minutes from 00:00. */ static TimeOffset forMinutes(int16_t minutes) { - return TimeOffset(minutes / 15); + return TimeOffset(minutes); } /** @@ -107,7 +111,7 @@ class TimeOffset { static TimeOffset forOffsetStringChainable(const char*& offsetString); /** Return an error indicator. */ - static TimeOffset forError() { return TimeOffset(kErrorCode); } + static TimeOffset forError() { return TimeOffset(kErrorMinutes); } /** * Create TimeOffset from the offset code. @@ -115,18 +119,19 @@ class TimeOffset { * @param offsetCode the amount of time offset in 15-minute increments. */ static TimeOffset forOffsetCode(int8_t offsetCode) { - return TimeOffset(offsetCode); + return TimeOffset::forMinutes( + (offsetCode == kErrorCode) ? kErrorMinutes : offsetCode * 15); } /** Constructor. Create a time offset of 0. */ explicit TimeOffset() {} /** Return the time offset as the number of 15 minute increments. */ - int8_t toOffsetCode() const { return mOffsetCode; } + int8_t toOffsetCode() const { return mMinutes / 15; } /** Return the time offset as minutes. */ int16_t toMinutes() const { - return (int16_t) 15 * mOffsetCode; + return mMinutes; } /** Return the time offset as seconds. */ @@ -140,8 +145,8 @@ class TimeOffset { * hour and minute components will contain the negative sign. */ void toHourMinute(int8_t& hour, int8_t& minute) const { - hour = mOffsetCode / 4; - minute = (mOffsetCode % 4) * 15; + hour = mMinutes / 60; + minute = mMinutes % 60; } /** @@ -149,11 +154,11 @@ class TimeOffset { * isZero means that it is UTC. If this represents a DST delta offset, then * isZero means that the time zone is in standard time. */ - bool isZero() const { return mOffsetCode == 0; } + bool isZero() const { return mMinutes == 0; } /** Return true if this TimeOffset represents an error. */ bool isError() const { - return mOffsetCode == kErrorCode; + return mMinutes == kErrorMinutes; } /** Print the human readable string. For example, "-08:00". */ @@ -165,35 +170,34 @@ class TimeOffset { private: friend bool operator==(const TimeOffset& a, const TimeOffset& b); - // Give access to setOffsetCode() + + // Give access to setMinutes() friend void time_offset_mutation::incrementHour(TimeOffset& offset); friend void time_offset_mutation::increment15Minutes(TimeOffset& offset); /** Length of UTC offset string (e.g. "-07:00", "+01:30"). */ static const uint8_t kTimeOffsetStringLength = 6; - /** Constructor. Create a time offset from the offset code. */ - explicit TimeOffset(int8_t offsetCode): - mOffsetCode(offsetCode) {} + /** Constructor. Create a time offset from the offset minutes. */ + explicit TimeOffset(int16_t minutes): + mMinutes(minutes) {} - /** Set the offset code. */ - void setOffsetCode(int8_t offsetCode) { mOffsetCode = offsetCode; } + /** Set the offset minutes. */ + void setMinutes(int16_t minutes) { + mMinutes = minutes; + } /** - * Time offset code, representing 15 minute increments from UTC. In theory, - * the code can range from [-128, 127]. But the value of -128 is used to - * represent an internal error, causing isError() to return true so the - * valid range is [-127, 127]. - * - * The actual range of time zones used in real life values are expected to - * be smaller, probably smaller than the range of [-64, 63], i.e. [-16:00, - * +15:45]. + * Time offset minutes from UTC. In theory, the minutes can range from + * [-32768, 32767]. But the value of -32768 is used to represent an + * internal error, causing isError() to return true so the valid range is + * [-32767, 32767]. */ - int8_t mOffsetCode = 0; + int16_t mMinutes = 0; }; inline bool operator==(const TimeOffset& a, const TimeOffset& b) { - return a.mOffsetCode == b.mOffsetCode; + return a.mMinutes == b.mMinutes; } inline bool operator!=(const TimeOffset& a, const TimeOffset& b) { diff --git a/src/ace_time/TimeZone.cpp b/src/ace_time/TimeZone.cpp index 6b01a1502..5bece1162 100644 --- a/src/ace_time/TimeZone.cpp +++ b/src/ace_time/TimeZone.cpp @@ -15,8 +15,8 @@ void TimeZone::printTo(Print& printer) const { if (isUtc()) { printer.print("UTC"); } else { - TimeOffset::forOffsetCode(mStdOffsetCode).printTo(printer); - TimeOffset::forOffsetCode(mDstOffsetCode).printTo(printer); + TimeOffset::forMinutes(mStdOffsetMinutes).printTo(printer); + TimeOffset::forMinutes(mDstOffsetMinutes).printTo(printer); } return; case kTypeBasic: @@ -42,11 +42,11 @@ void TimeZone::printShortTo(Print& printer) const { if (isUtc()) { printer.print("UTC"); } else { - auto utcOffset = TimeOffset::forOffsetCode( - mStdOffsetCode + mDstOffsetCode); + auto utcOffset = TimeOffset::forMinutes( + mStdOffsetMinutes + mDstOffsetMinutes); utcOffset.printTo(printer); printer.print('('); - printer.print((mDstOffsetCode != 0) ? "DST" : "STD"); + printer.print((mDstOffsetMinutes != 0) ? "DST" : "STD"); printer.print(')'); } return; @@ -73,7 +73,7 @@ void TimeZone::printAbbrevTo(Print& printer, acetime_t epochSeconds) const { if (isUtc()) { printer.print("UTC"); } else { - printer.print((mDstOffsetCode != 0) ? "DST" : "STD"); + printer.print((mDstOffsetMinutes != 0) ? "DST" : "STD"); } return; case kTypeBasic: diff --git a/src/ace_time/TimeZone.h b/src/ace_time/TimeZone.h index 9209e66d2..f1f4f00b2 100644 --- a/src/ace_time/TimeZone.h +++ b/src/ace_time/TimeZone.h @@ -143,8 +143,8 @@ class TimeZone { /** Default constructor creates a UTC TimeZone. */ TimeZone(): mType(kTypeManual), - mStdOffsetCode(0), - mDstOffsetCode(0) {} + mStdOffsetMinutes(0), + mDstOffsetMinutes(0) {} /** * Return the type of TimeZone. This value is useful for serializing and @@ -154,12 +154,12 @@ class TimeZone { /** Return the Standard TimeOffset. Valid only for kTypeManual. */ TimeOffset getStdOffset() const { - return TimeOffset::forOffsetCode(mStdOffsetCode); + return TimeOffset::forMinutes(mStdOffsetMinutes); } /** Return the DST TimeOffset. Valid only for kTypeManual. */ TimeOffset getDstOffset() const { - return TimeOffset::forOffsetCode(mDstOffsetCode); + return TimeOffset::forMinutes(mDstOffsetMinutes); } /** @@ -191,7 +191,7 @@ class TimeZone { TimeOffset getUtcOffset(acetime_t epochSeconds) const { switch (mType) { case kTypeManual: - return TimeOffset::forOffsetCode(mStdOffsetCode + mDstOffsetCode); + return TimeOffset::forMinutes(mStdOffsetMinutes + mDstOffsetMinutes); case kTypeBasic: case kTypeExtended: mZoneProcessor->setZoneInfo(mZoneInfo); @@ -216,7 +216,7 @@ class TimeZone { TimeOffset getDeltaOffset(acetime_t epochSeconds) const { switch (mType) { case kTypeManual: - return TimeOffset::forOffsetCode(mDstOffsetCode); + return TimeOffset::forMinutes(mDstOffsetMinutes); case kTypeBasic: case kTypeExtended: mZoneProcessor->setZoneInfo(mZoneInfo); @@ -244,7 +244,7 @@ class TimeZone { switch (mType) { case kTypeManual: odt = OffsetDateTime::forLocalDateTimeAndOffset(ldt, - TimeOffset::forOffsetCode(mStdOffsetCode + mDstOffsetCode)); + TimeOffset::forMinutes(mStdOffsetMinutes + mDstOffsetMinutes)); break; case kTypeBasic: case kTypeExtended: @@ -267,19 +267,19 @@ class TimeZone { /** Return true if UTC (+00:00+00:00). */ bool isUtc() const { if (mType != kTypeManual) return false; - return mStdOffsetCode == 0 && mDstOffsetCode == 0; + return mStdOffsetMinutes == 0 && mDstOffsetMinutes == 0; } /** - * Return if mDstOffsetCode is not zero. This is a convenience method that - * is valid only if the TimeZone is a kTypeManual. Returns false for all - * other type of TimeZone. This is intended to be used by applications + * Return if mDstOffsetMinutes is not zero. This is a convenience method + * that is valid only if the TimeZone is a kTypeManual. Returns false for + * all other type of TimeZone. This is intended to be used by applications * which allows the user to set the UTC offset and DST flag manually (e.g. * examples/WorldClock.ino). */ bool isDst() const { if (mType != kTypeManual) return false; - return mDstOffsetCode != 0; + return mDstOffsetMinutes != 0; } /** @@ -288,7 +288,7 @@ class TimeZone { */ void setStdOffset(TimeOffset stdOffset) { if (mType != kTypeManual) return; - mStdOffsetCode = stdOffset.toOffsetCode(); + mStdOffsetMinutes = stdOffset.toMinutes(); } /** @@ -297,7 +297,7 @@ class TimeZone { */ void setDstOffset(TimeOffset dstOffset) { if (mType != kTypeManual) return; - mDstOffsetCode = dstOffset.toOffsetCode(); + mDstOffsetMinutes = dstOffset.toMinutes(); } /** @@ -310,8 +310,8 @@ class TimeZone { TimeZoneData d; switch (mType) { case TimeZone::kTypeManual: - d.stdOffsetMinutes = mStdOffsetCode * 15; - d.dstOffsetMinutes = mDstOffsetCode * 15; + d.stdOffsetMinutes = mStdOffsetMinutes; + d.dstOffsetMinutes = mDstOffsetMinutes; d.type = TimeZoneData::kTypeManual; break; case TimeZone::kTypeBasic: @@ -385,8 +385,8 @@ class TimeZone { */ explicit TimeZone(TimeOffset stdOffset, TimeOffset dstOffset): mType(kTypeManual), - mStdOffsetCode(stdOffset.toOffsetCode()), - mDstOffsetCode(dstOffset.toOffsetCode()) {} + mStdOffsetMinutes(stdOffset.toMinutes()), + mDstOffsetMinutes(dstOffset.toMinutes()) {} /** Constructor needed to create a ::forError(). */ explicit TimeZone(uint8_t type): @@ -403,14 +403,14 @@ class TimeZone { // 4 combinations: // (type) (kTypeError) - // (type, mStdOffsetCode, mDstOffsetCode) + // (type, mStdOffsetMinutes, mDstOffsetMinutes) // (type, mZoneInfo, mZoneProcessor) // (type, mZoneInfo, mZoneProcessorCache) union { /** Used by kTypeManual. */ struct { - int8_t mStdOffsetCode; - int8_t mDstOffsetCode; + int16_t mStdOffsetMinutes; + int16_t mDstOffsetMinutes; }; struct { @@ -437,8 +437,8 @@ inline bool operator==(const TimeZone& a, const TimeZone& b) { case TimeZone::kTypeError: return true; case TimeZone::kTypeManual: - return a.mStdOffsetCode == b.mStdOffsetCode - && a.mDstOffsetCode == b.mDstOffsetCode; + return a.mStdOffsetMinutes == b.mStdOffsetMinutes + && a.mDstOffsetMinutes == b.mDstOffsetMinutes; case TimeZone::kTypeBasic: case TimeZone::kTypeExtended: case TimeZone::kTypeBasicManaged: diff --git a/src/ace_time/time_offset_mutation.h b/src/ace_time/time_offset_mutation.h index 9474420e7..72b8fa7a1 100644 --- a/src/ace_time/time_offset_mutation.h +++ b/src/ace_time/time_offset_mutation.h @@ -35,9 +35,9 @@ namespace time_offset_mutation { * limited from -16:00 to +16:00, inclusive, with +16:00 wrapping to -16:00. */ inline void increment15Minutes(TimeOffset& offset) { - int8_t code = offset.toOffsetCode() + 1; - if (code > 64) code = -64; - offset.setOffsetCode(code); + int16_t minutes = offset.toMinutes() + 15; + if (minutes > 960) minutes = -960; // FIXME: This truncates to 15-minutes + offset.setMinutes(minutes); } } diff --git a/tests/TimeOffsetTest/TimeOffsetTest.ino b/tests/TimeOffsetTest/TimeOffsetTest.ino index d4f7bd3c4..9372ad279 100644 --- a/tests/TimeOffsetTest/TimeOffsetTest.ino +++ b/tests/TimeOffsetTest/TimeOffsetTest.ino @@ -30,12 +30,12 @@ test(TimeOffsetTest, forMinutes) { assertEqual((int32_t) 900, offset.toSeconds()); offset = TimeOffset::forMinutes(-16); - assertEqual((int16_t) -15, offset.toMinutes()); - assertEqual((int32_t) -900, offset.toSeconds()); + assertEqual((int16_t) -16, offset.toMinutes()); + assertEqual((int32_t) -960, offset.toSeconds()); offset = TimeOffset::forMinutes(16); - assertEqual((int16_t) 15, offset.toMinutes()); - assertEqual((int32_t) 900, offset.toSeconds()); + assertEqual((int16_t) 16, offset.toMinutes()); + assertEqual((int32_t) 960, offset.toSeconds()); } test(TimeOffsetTest, forHour) { @@ -57,7 +57,7 @@ test(TimeOffsetTest, forOffsetString) { assertEqual(TimeOffset::forOffsetString("-07:45").toMinutes(), -(7*60+45)); assertEqual(TimeOffset::forOffsetString("+01:00").toMinutes(), 60); assertEqual(TimeOffset::forOffsetString("+01:15").toMinutes(), 75); - assertEqual(TimeOffset::forOffsetString("+01:16").toMinutes(), 75); + assertEqual(TimeOffset::forOffsetString("+01:16").toMinutes(), 76); } test(TimeOffsetTest, toHourMinute) { @@ -100,7 +100,9 @@ test(TimeOffsetMutationTest, increment15Minutes) { TimeOffset offset; offset = TimeOffset::forHourMinute(-16, 0); + assertEqual(-960, offset.toMinutes()); time_offset_mutation::increment15Minutes(offset); + assertEqual(-945, offset.toMinutes()); offset.toHourMinute(hour, minute); assertEqual(-15, hour); assertEqual(-45, minute); From 1b4479c31348e84f33d64379a9a0bdbb070aae50 Mon Sep 17 00:00:00 2001 From: Brian Park Date: Fri, 9 Aug 2019 13:48:55 -0700 Subject: [PATCH 09/55] src/ExtendedZoneProcessor: Add debugging statements --- src/ace_time/ExtendedZoneProcessor.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/ace_time/ExtendedZoneProcessor.h b/src/ace_time/ExtendedZoneProcessor.h index 595f9385b..0d83eeca8 100644 --- a/src/ace_time/ExtendedZoneProcessor.h +++ b/src/ace_time/ExtendedZoneProcessor.h @@ -696,6 +696,11 @@ class ExtendedZoneProcessor: public ZoneProcessor { OffsetDateTime getOffsetDateTime(const LocalDateTime& ldt) const override { TimeOffset offset; + if (ACE_TIME_EXTENDED_ZONE_PROCESSOR_DEBUG) { + logging::printf("getOffsetDateTime(): ldt="); + ldt.printTo(SERIAL_PORT_MONITOR); + SERIAL_PORT_MONITOR.println(); + } bool success = init(ldt.localDate()); if (success) { const extended::Transition* transition = @@ -712,6 +717,11 @@ class ExtendedZoneProcessor: public ZoneProcessor { if (offset.isError()) { return odt; } + if (ACE_TIME_EXTENDED_ZONE_PROCESSOR_DEBUG) { + logging::printf("getOffsetDateTime(): odt="); + odt.printTo(SERIAL_PORT_MONITOR); + SERIAL_PORT_MONITOR.println(); + } // Normalize the OffsetDateTime, causing LocalDateTime in the DST // transtion gap to be shifted forward one hour. For LocalDateTime in an @@ -727,6 +737,11 @@ class ExtendedZoneProcessor: public ZoneProcessor { transition->offsetCode + transition->deltaCode) : TimeOffset::forError(); odt = OffsetDateTime::forEpochSeconds(epochSeconds, offset); + if (ACE_TIME_EXTENDED_ZONE_PROCESSOR_DEBUG) { + logging::printf("getOffsetDateTime(): normalized(odt)="); + odt.printTo(SERIAL_PORT_MONITOR); + SERIAL_PORT_MONITOR.println(); + } return odt; } From 1623aa1bbb4bdd64af3ed2fd2722ede94b8db1bd Mon Sep 17 00:00:00 2001 From: Brian Park Date: Fri, 9 Aug 2019 13:54:41 -0700 Subject: [PATCH 10/55] src: Increase zoneinfo atTime and untilTime granularity to 1 minute using Brokers to unpack fields --- src/ace_time/BasicZoneProcessor.h | 6 +- src/ace_time/ExtendedZoneProcessor.h | 109 +++++++++++------- src/ace_time/internal/Brokers.h | 43 +++++-- src/ace_time/zonedbx/zone_infos.cpp | 2 +- src/ace_time/zonedbx/zone_infos.h | 7 +- src/ace_time/zonedbx/zone_policies.cpp | 16 +-- src/ace_time/zonedbx/zone_policies.h | 5 +- .../ExtendedZoneProcessorTest.ino | 92 +++++++-------- .../TransitionStorageTest.ino | 64 +++++++++- .../ZonedDateTimeExtendedTest.ino | 4 + tools/argenerator.py | 47 +++++--- tools/tzcompiler.py | 5 +- 12 files changed, 260 insertions(+), 140 deletions(-) diff --git a/src/ace_time/BasicZoneProcessor.h b/src/ace_time/BasicZoneProcessor.h index 699543db3..fbd0d4dea 100644 --- a/src/ace_time/BasicZoneProcessor.h +++ b/src/ace_time/BasicZoneProcessor.h @@ -730,9 +730,9 @@ class BasicZoneProcessor: public ZoneProcessor { transition.rule.atTimeModifier()); // startDateTime - const uint8_t timeCode = transition.rule.atTimeCode(); - const uint8_t atHour = timeCode / 4; - const uint8_t atMinute = (timeCode % 4) * 15; + const uint16_t minutes = transition.rule.atTimeMinutes(); + const uint8_t atHour = minutes / 60; + const uint8_t atMinute = minutes % 60; OffsetDateTime startDateTime = OffsetDateTime::forComponents( year, monthDay.month, monthDay.day, atHour, atMinute, 0 /*second*/, diff --git a/src/ace_time/ExtendedZoneProcessor.h b/src/ace_time/ExtendedZoneProcessor.h index 0d83eeca8..b999448bb 100644 --- a/src/ace_time/ExtendedZoneProcessor.h +++ b/src/ace_time/ExtendedZoneProcessor.h @@ -48,6 +48,7 @@ class TransitionStorageTest_addFreeAgentToCandidatePool; class TransitionStorageTest_setFreeAgentAsPrior; class TransitionStorageTest_addActiveCandidatesToActivePool; class TransitionStorageTest_resetCandidatePool; +class TransitionStorageTest_findTransitionForDateTime; namespace ace_time { @@ -57,22 +58,20 @@ class ZoneProcessorCacheImpl; namespace extended { // NOTE: Consider compressing 'modifier' into 'month' field -/** - * A tuple that represents a date and time, using a timeCode that tracks the - * time component using 15-minute intervals. - */ +/** A tuple that represents a date and time. */ struct DateTuple { int8_t yearTiny; // [-127, 126], 127 will cause bugs uint8_t month; // [1-12] uint8_t day; // [1-31] - int8_t timeCode; // 15-min intervals, negative values allowed + int16_t minutes; // negative values allowed uint8_t modifier; // TIME_MODIFIER_S, TIME_MODIFIER_W, TIME_MODIFIER_U /** Used only for debugging. */ void log() const { if (ACE_TIME_EXTENDED_ZONE_PROCESSOR_DEBUG) { - logging::printf("DateTuple(%d-%u-%uT%d'%c')", - yearTiny+LocalDate::kEpochYear, month, day, timeCode, modifier); + char c = "wsu"[(modifier>>4)]; + logging::printf("DateTuple(%04d-%02u-%02uT%d'%c')", + yearTiny+LocalDate::kEpochYear, month, day, minutes, c); } } }; @@ -85,8 +84,8 @@ inline bool operator<(const DateTuple& a, const DateTuple& b) { if (a.month > b.month) return false; if (a.day < b.day) return true; if (a.day > b.day) return false; - if (a.timeCode < b.timeCode) return true; - if (a.timeCode > b.timeCode) return false; + if (a.minutes < b.minutes) return true; + if (a.minutes > b.minutes) return false; return false; } @@ -107,7 +106,7 @@ inline bool operator==(const DateTuple& a, const DateTuple& b) { return a.yearTiny == b.yearTiny && a.month == b.month && a.day == b.day - && a.timeCode == b.timeCode + && a.minutes == b.minutes && a.modifier == b.modifier; } @@ -548,12 +547,13 @@ class TransitionStorage { "findTransitionForDateTime(): mIndexFree: %d\n", mIndexFree); } - // Convert to DateTuple. If the localDateTime is not a multiple of 15 - // minutes, the comparision (startTime < localDate) will still be valid. + // Convert LocalDateTime to DateTuple. DateTuple localDate = { ldt.yearTiny(), ldt.month(), ldt.day(), - (int8_t) (ldt.hour() * 4 + ldt.minute() / 15), + (int16_t) (ldt.hour() * 60 + ldt.minute()), ZoneContext::TIME_MODIFIER_W }; const Transition* match = nullptr; + + // Find the last Transition that matches for (uint8_t i = 0; i < mIndexFree; i++) { const Transition* candidate = mTransitions[i]; if (candidate->startDateTime > localDate) break; @@ -607,6 +607,7 @@ class TransitionStorage { friend class ::TransitionStorageTest_addFreeAgentToCandidatePool; friend class ::TransitionStorageTest_setFreeAgentAsPrior; friend class ::TransitionStorageTest_addActiveCandidatesToActivePool; + friend class ::TransitionStorageTest_findTransitionForDateTime; friend class ::TransitionStorageTest_resetCandidatePool; /** Return the transition at position i. */ @@ -702,9 +703,16 @@ class ExtendedZoneProcessor: public ZoneProcessor { SERIAL_PORT_MONITOR.println(); } bool success = init(ldt.localDate()); + + // Find the Transition to get the DST offset if (success) { const extended::Transition* transition = mTransitionStorage.findTransitionForDateTime(ldt); + if (ACE_TIME_EXTENDED_ZONE_PROCESSOR_DEBUG) { + logging::printf("getOffsetDateTime(): match transition="); + transition->log(); + logging::printf("\n"); + } offset = (transition) ? TimeOffset::forOffsetCode( transition->offsetCode + transition->deltaCode) @@ -792,6 +800,7 @@ class ExtendedZoneProcessor: public ZoneProcessor { friend class ::ExtendedZoneProcessorTest_fixTransitionTimes_generateStartUntilTimes; friend class ::ExtendedZoneProcessorTest_createAbbreviation; friend class ::ExtendedZoneProcessorTest_setZoneInfo; + friend class ::TransitionStorageTest_findTransitionForDateTime; template friend class ZoneProcessorCacheImpl; // setZoneInfo() @@ -880,15 +889,16 @@ class ExtendedZoneProcessor: public ZoneProcessor { mNumMatches = findMatches(mZoneInfo, startYm, untilYm, mMatches, kMaxMatches); - if (ACE_TIME_EXTENDED_ZONE_PROCESSOR_DEBUG) { - log(); - } + if (ACE_TIME_EXTENDED_ZONE_PROCESSOR_DEBUG) { log(); } findTransitions(mTransitionStorage, mMatches, mNumMatches); extended::Transition** begin = mTransitionStorage.getActivePoolBegin(); extended::Transition** end = mTransitionStorage.getActivePoolEnd(); fixTransitionTimes(begin, end); + if (ACE_TIME_EXTENDED_ZONE_PROCESSOR_DEBUG) { log(); } generateStartUntilTimes(begin, end); + if (ACE_TIME_EXTENDED_ZONE_PROCESSOR_DEBUG) { log(); } calcAbbreviations(begin, end); + if (ACE_TIME_EXTENDED_ZONE_PROCESSOR_DEBUG) { log(); } mIsFilled = true; return true; @@ -955,8 +965,8 @@ class ExtendedZoneProcessor: public ZoneProcessor { if (era.untilMonth() < month) return -1; if (era.untilMonth() > month) return 1; if (era.untilDay() > 1) return 1; - //if (era.untilTimeCode() < 0) return -1; // never possible - if (era.untilTimeCode() > 0) return 1; + //if (era.untilTimeMinutes() < 0) return -1; // never possible + if (era.untilTimeMinutes() > 0) return 1; return 0; } @@ -973,7 +983,7 @@ class ExtendedZoneProcessor: public ZoneProcessor { const extended::YearMonthTuple& untilYm) { extended::DateTuple startDate = { prev.untilYearTiny(), prev.untilMonth(), prev.untilDay(), - (int8_t) prev.untilTimeCode(), prev.untilTimeModifier() + (int16_t) prev.untilTimeMinutes(), prev.untilTimeModifier() }; extended::DateTuple lowerBound = { startYm.yearTiny, startYm.month, 1, 0, @@ -985,7 +995,7 @@ class ExtendedZoneProcessor: public ZoneProcessor { extended::DateTuple untilDate = { era.untilYearTiny(), era.untilMonth(), era.untilDay(), - (int8_t) era.untilTimeCode(), era.untilTimeModifier() + (int16_t) era.untilTimeMinutes(), era.untilTimeModifier() }; extended::DateTuple upperBound = { untilYm.yearTiny, untilYm.month, 1, 0, @@ -1206,7 +1216,7 @@ class ExtendedZoneProcessor: public ZoneProcessor { yearTiny + LocalDate::kEpochYear, rule.inMonth(), rule.onDayOfWeek(), rule.onDayOfMonth()); return {yearTiny, monthDay.month, monthDay.day, - (int8_t) rule.atTimeCode(), rule.atTimeModifier()}; + (int16_t) rule.atTimeMinutes(), rule.atTimeModifier()}; } /** @@ -1303,63 +1313,74 @@ class ExtendedZoneProcessor: public ZoneProcessor { if (tt->modifier == extended::ZoneContext::TIME_MODIFIER_S) { *tts = *tt; *ttu = {tt->yearTiny, tt->month, tt->day, - (int8_t) (tt->timeCode - offsetCode), + (int16_t) (tt->minutes - 15 * offsetCode), extended::ZoneContext::TIME_MODIFIER_U}; *tt = {tt->yearTiny, tt->month, tt->day, - (int8_t) (tt->timeCode + deltaCode), + (int16_t) (tt->minutes + 15 * deltaCode), extended::ZoneContext::TIME_MODIFIER_W}; } else if (tt->modifier == extended::ZoneContext::TIME_MODIFIER_U) { *ttu = *tt; *tts = {tt->yearTiny, tt->month, tt->day, - (int8_t) (tt->timeCode + offsetCode), + (int16_t) (tt->minutes + 15 * offsetCode), extended::ZoneContext::TIME_MODIFIER_S}; *tt = {tt->yearTiny, tt->month, tt->day, - (int8_t) (tt->timeCode + offsetCode + deltaCode), + (int16_t) (tt->minutes + 15 * (offsetCode + deltaCode)), extended::ZoneContext::TIME_MODIFIER_W}; } else { // Explicit set the modifier to 'w' in case it was something else. tt->modifier = extended::ZoneContext::TIME_MODIFIER_W; *tts = {tt->yearTiny, tt->month, tt->day, - (int8_t) (tt->timeCode - deltaCode), + (int16_t) (tt->minutes - 15 * deltaCode), extended::ZoneContext::TIME_MODIFIER_S}; *ttu = {tt->yearTiny, tt->month, tt->day, - (int8_t) (tt->timeCode - deltaCode - offsetCode), + (int16_t) (tt->minutes - 15 * (deltaCode + offsetCode)), extended::ZoneContext::TIME_MODIFIER_U}; } - if (ACE_TIME_EXTENDED_ZONE_PROCESSOR_DEBUG) { - logging::printf("expandDateTuple(): normalizeDateTuple(): 1\n"); - } normalizeDateTuple(tt); if (ACE_TIME_EXTENDED_ZONE_PROCESSOR_DEBUG) { - logging::printf("expandDateTuple(): normalizeDateTuple(): 2\n"); + logging::printf("expandDateTuple(): normalizeDateTuple(tt): "); + tt->log(); + logging::printf("\n"); } + normalizeDateTuple(tts); if (ACE_TIME_EXTENDED_ZONE_PROCESSOR_DEBUG) { - logging::printf("expandDateTuple(): normalizeDateTuple(): 3\n"); + logging::printf("expandDateTuple(): normalizeDateTuple(tts): "); + tts->log(); + logging::printf("\n"); } + normalizeDateTuple(ttu); + if (ACE_TIME_EXTENDED_ZONE_PROCESSOR_DEBUG) { + logging::printf("expandDateTuple(): normalizeDateTuple(ttu): "); + ttu->log(); + logging::printf("\n"); + } } - /** Normalize DateTuple::timeCode if its magnitude is more than 24 hours. */ + /** + * Normalize DateTuple::minutes if its magnitude is more than 24 + * hours. + */ static void normalizeDateTuple(extended::DateTuple* dt) { - const int8_t kOneDayAsCode = 4 * 24; - if (dt->timeCode <= -kOneDayAsCode) { + const int16_t kOneDayAsMinutes = 60 * 24; + if (dt->minutes <= -kOneDayAsMinutes) { LocalDate ld = LocalDate::forTinyComponents( dt->yearTiny, dt->month, dt->day); local_date_mutation::decrementOneDay(ld); dt->yearTiny = ld.yearTiny(); dt->month = ld.month(); dt->day = ld.day(); - dt->timeCode += kOneDayAsCode; - } else if (kOneDayAsCode <= dt->timeCode) { + dt->minutes += kOneDayAsMinutes; + } else if (kOneDayAsMinutes <= dt->minutes) { LocalDate ld = LocalDate::forTinyComponents( dt->yearTiny, dt->month, dt->day); local_date_mutation::incrementOneDay(ld); dt->yearTiny = ld.yearTiny(); dt->month = ld.month(); dt->day = ld.day(); - dt->timeCode -= kOneDayAsCode; + dt->minutes -= kOneDayAsMinutes; } else { // do nothing } @@ -1504,9 +1525,11 @@ class ExtendedZoneProcessor: public ZoneProcessor { // 2) Calculate the current startDateTime by shifting the // transitionTime (represented in the UTC offset of the previous // transition) into the UTC offset of the *current* transition. - int8_t code = tt.timeCode - prev->offsetCode - prev->deltaCode - + t->offsetCode + t->deltaCode; - t->startDateTime = {tt.yearTiny, tt.month, tt.day, code, tt.modifier}; + int16_t minutes = tt.minutes + 15 * ( + - prev->offsetCode - prev->deltaCode + + t->offsetCode + t->deltaCode); + t->startDateTime = {tt.yearTiny, tt.month, tt.day, minutes, + tt.modifier}; normalizeDateTuple(&t->startDateTime); // 3) The epochSecond of the 'transitionTime' is determined by the @@ -1520,8 +1543,8 @@ class ExtendedZoneProcessor: public ZoneProcessor { // hasn't been clobbered by 'untilDateTime' yet. Not sure if this saves // any CPU time though, since we still need to mutiply by 900. const extended::DateTuple& st = t->startDateTime; - const acetime_t offsetSeconds = (acetime_t) 900 - * (st.timeCode - t->offsetCode - t->deltaCode); + const acetime_t offsetSeconds = (acetime_t) 60 + * (st.minutes - 15 * (t->offsetCode + t->deltaCode)); LocalDate ld = LocalDate::forTinyComponents( st.yearTiny, st.month, st.day); t->startEpochSeconds = ld.toEpochSeconds() + offsetSeconds; diff --git a/src/ace_time/internal/Brokers.h b/src/ace_time/internal/Brokers.h index ff8d58f72..1dea2a49f 100644 --- a/src/ace_time/internal/Brokers.h +++ b/src/ace_time/internal/Brokers.h @@ -44,6 +44,15 @@ namespace ace_time { namespace internal { +/** Convert (timeCode, timeModifer) from zoneinfo to minutes. */ +inline uint16_t timeCodeToMinutes(uint8_t rawCode, uint8_t rawModifier) { + return rawCode * (uint16_t) 15 + (rawModifier & 0x0f); +} + +inline uint8_t toModifier(uint8_t rawModifier) { + return rawModifier & 0xf0; +} + //---------------------------------------------------------------------------- // Direct data brokers for reading from SRAM //---------------------------------------------------------------------------- @@ -78,9 +87,14 @@ class DirectZoneRuleBroker { int8_t onDayOfMonth() const { return mZoneRule->onDayOfMonth; } - uint8_t atTimeCode() const { return mZoneRule->atTimeCode; } + uint16_t atTimeMinutes() const { + return timeCodeToMinutes( + mZoneRule->atTimeCode, mZoneRule->atTimeModifier); + } - uint8_t atTimeModifier() const { return mZoneRule->atTimeModifier; } + uint8_t atTimeModifier() const { + return toModifier(mZoneRule->atTimeModifier); + } int8_t deltaCode() const { return mZoneRule->deltaCode; } @@ -161,9 +175,14 @@ class DirectZoneEraBroker { uint8_t untilDay() const { return mZoneEra->untilDay; } - uint8_t untilTimeCode() const { return mZoneEra->untilTimeCode; } + uint16_t untilTimeMinutes() const { + return timeCodeToMinutes( + mZoneEra->untilTimeCode, mZoneEra->untilTimeModifier); + } - uint8_t untilTimeModifier() const { return mZoneEra->untilTimeModifier; } + uint8_t untilTimeModifier() const { + return toModifier(mZoneEra->untilTimeModifier); + } private: const ZE* mZoneEra; @@ -272,12 +291,14 @@ class FlashZoneRuleBroker { return pgm_read_byte(&mZoneRule->onDayOfMonth); } - uint8_t atTimeCode() const { - return pgm_read_byte(&mZoneRule->atTimeCode); + uint16_t atTimeMinutes() const { + return timeCodeToMinutes( + pgm_read_byte(&mZoneRule->atTimeCode), + pgm_read_byte(&mZoneRule->atTimeModifier)); } uint8_t atTimeModifier() const { - return pgm_read_byte(&mZoneRule->atTimeModifier); + return toModifier(pgm_read_byte(&mZoneRule->atTimeModifier)); } int8_t deltaCode() const { @@ -383,12 +404,14 @@ class FlashZoneEraBroker { return pgm_read_byte(&mZoneEra->untilDay); } - uint8_t untilTimeCode() const { - return pgm_read_byte(&mZoneEra->untilTimeCode); + uint16_t untilTimeMinutes() const { + return timeCodeToMinutes( + pgm_read_byte(&mZoneEra->untilTimeCode), + pgm_read_byte(&mZoneEra->untilTimeModifier)); } uint8_t untilTimeModifier() const { - return pgm_read_byte(&mZoneEra->untilTimeModifier); + return toModifier(pgm_read_byte(&mZoneEra->untilTimeModifier)); } private: diff --git a/src/ace_time/zonedbx/zone_infos.cpp b/src/ace_time/zonedbx/zone_infos.cpp index 4fd4ee21b..9ca5ad3c4 100644 --- a/src/ace_time/zonedbx/zone_infos.cpp +++ b/src/ace_time/zonedbx/zone_infos.cpp @@ -8632,7 +8632,7 @@ static const extended::ZoneEra kZoneEraAsia_Gaza[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 0 /*untilTimeCode*/, - extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W + 1 /*untilTimeModifier*/, }, // 2:00 Palestine EE%sT 2011 Aug 1 { diff --git a/src/ace_time/zonedbx/zone_infos.h b/src/ace_time/zonedbx/zone_infos.h index 83d38bf39..763f51a43 100644 --- a/src/ace_time/zonedbx/zone_infos.h +++ b/src/ace_time/zonedbx/zone_infos.h @@ -639,14 +639,9 @@ extern const extended::ZoneInfo& kZoneZulu; // Zulu -> Etc/UTC //--------------------------------------------------------------------------- -// Inaccurate zones: 5 +// Inaccurate zones: 0 //--------------------------------------------------------------------------- -// America/Goose_Bay (AT time '0:01' of RULE 'StJohns' truncated to '00:00') -// America/Moncton (AT time '0:01' of RULE 'Moncton' truncated to '00:00') -// America/St_Johns (AT time '0:01' of RULE 'StJohns' truncated to '00:00') -// Asia/Gaza (UNTIL time '0:01' truncated to '00:00', AT time '0:01' of RULE 'Palestine' truncated to '00:00') -// Asia/Hebron (AT time '0:01' of RULE 'Palestine' truncated to '00:00') //--------------------------------------------------------------------------- diff --git a/src/ace_time/zonedbx/zone_policies.cpp b/src/ace_time/zonedbx/zone_policies.cpp index 57015a012..e43a07a0b 100644 --- a/src/ace_time/zonedbx/zone_policies.cpp +++ b/src/ace_time/zonedbx/zone_policies.cpp @@ -4498,7 +4498,7 @@ static const extended::ZoneRule kZoneRulesMoncton[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W + 1 /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -4510,7 +4510,7 @@ static const extended::ZoneRule kZoneRulesMoncton[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W + 1 /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -6047,7 +6047,7 @@ static const extended::ZoneRule kZoneRulesPalestine[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W + 1 /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -6667,7 +6667,7 @@ static const extended::ZoneRule kZoneRulesStJohns[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W + 1 /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -6679,7 +6679,7 @@ static const extended::ZoneRule kZoneRulesStJohns[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W + 1 /*atTimeModifier*/, 8 /*deltaCode*/, 0 /*letter; "DD"*/, }, @@ -6691,7 +6691,7 @@ static const extended::ZoneRule kZoneRulesStJohns[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W + 1 /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -6703,7 +6703,7 @@ static const extended::ZoneRule kZoneRulesStJohns[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 0 /*atTimeCode*/, - extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W + 1 /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -6715,7 +6715,7 @@ static const extended::ZoneRule kZoneRulesStJohns[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W + 1 /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, diff --git a/src/ace_time/zonedbx/zone_policies.h b/src/ace_time/zonedbx/zone_policies.h index 90e971cfb..40999cfa8 100644 --- a/src/ace_time/zonedbx/zone_policies.h +++ b/src/ace_time/zonedbx/zone_policies.h @@ -167,11 +167,8 @@ extern const extended::ZonePolicy kPolicyZion; // kPolicyW-Eur (unused) -// Inaccurate zone policies: 3 +// Inaccurate zone policies: 0 // -// kPolicyMoncton (AT time '0:01' truncated to '00:00') -// kPolicyPalestine (AT time '0:01' truncated to '00:00') -// kPolicyStJohns (AT time '0:01' truncated to '00:00') } diff --git a/tests/ExtendedZoneProcessorTest/ExtendedZoneProcessorTest.ino b/tests/ExtendedZoneProcessorTest/ExtendedZoneProcessorTest.ino index f371282c3..2cccde50f 100644 --- a/tests/ExtendedZoneProcessorTest/ExtendedZoneProcessorTest.ino +++ b/tests/ExtendedZoneProcessorTest/ExtendedZoneProcessorTest.ino @@ -219,9 +219,9 @@ test(ExtendedZoneProcessorTest, createMatch) { match = ExtendedZoneProcessor::createMatch( extended::ZoneEraBroker(&prev), extended::ZoneEraBroker(&era3), startYm, untilYm); - assertTrue((match.startDateTime == DateTuple{0, 1, 2, 3, + assertTrue((match.startDateTime == DateTuple{0, 1, 2, 15*3, ZoneContext::TIME_MODIFIER_W})); - assertTrue((match.untilDateTime == DateTuple{2, 3, 4, 5, + assertTrue((match.untilDateTime == DateTuple{2, 3, 4, 15*5, ZoneContext::TIME_MODIFIER_W})); assertTrue(&era3 == match.era.zoneEra()); } @@ -238,17 +238,17 @@ test(ExtendedZoneProcessorTest, findMatches_simple) { assertTrue((matches[0].startDateTime == DateTuple{18, 12, 1, 0, ZoneContext::TIME_MODIFIER_W})); - assertTrue((matches[0].untilDateTime == DateTuple{19, 3, 10, 8, + assertTrue((matches[0].untilDateTime == DateTuple{19, 3, 10, 15*8, ZoneContext::TIME_MODIFIER_W})); assertTrue(&kZoneEraAlmostLosAngeles[0] == matches[0].era.zoneEra()); - assertTrue((matches[1].startDateTime == DateTuple{19, 3, 10, 8, + assertTrue((matches[1].startDateTime == DateTuple{19, 3, 10, 15*8, ZoneContext::TIME_MODIFIER_W})); - assertTrue((matches[1].untilDateTime == DateTuple{19, 11, 3, 8, + assertTrue((matches[1].untilDateTime == DateTuple{19, 11, 3, 15*8, ZoneContext::TIME_MODIFIER_W})); assertTrue(&kZoneEraAlmostLosAngeles[1] == matches[1].era.zoneEra()); - assertTrue((matches[2].startDateTime == DateTuple{19, 11, 3, 8, + assertTrue((matches[2].startDateTime == DateTuple{19, 11, 3, 15*8, ZoneContext::TIME_MODIFIER_W})); assertTrue((matches[2].untilDateTime == DateTuple{20, 2, 1, 0, ZoneContext::TIME_MODIFIER_W})); @@ -278,11 +278,11 @@ test(ExtendedZoneProcessorTest, getTransitionTime) { // Nov 4 2018 DateTuple dt = ExtendedZoneProcessor::getTransitionTime(18, rule); - assertTrue((dt == DateTuple{18, 11, 4, 8, ZoneContext::TIME_MODIFIER_W})); + assertTrue((dt == DateTuple{18, 11, 4, 15*8, ZoneContext::TIME_MODIFIER_W})); // Nov 3 2019 dt = ExtendedZoneProcessor::getTransitionTime(19, rule); - assertTrue((dt == DateTuple{19, 11, 3, 8, ZoneContext::TIME_MODIFIER_W})); + assertTrue((dt == DateTuple{19, 11, 3, 15*8, ZoneContext::TIME_MODIFIER_W})); } test(ExtendedZoneProcessorTest, createTransitionForYear) { @@ -295,7 +295,7 @@ test(ExtendedZoneProcessorTest, createTransitionForYear) { const auto rule = extended::ZoneRuleBroker(&kZoneRulesTestUS[4]); Transition t; ExtendedZoneProcessor::createTransitionForYear(&t, 19, rule, &match); - assertTrue((t.transitionTime == DateTuple{19, 11, 3, 8, + assertTrue((t.transitionTime == DateTuple{19, 11, 3, 15*8, ZoneContext::TIME_MODIFIER_W})); } @@ -306,25 +306,25 @@ test(ExtendedZoneProcessorTest, normalizeDateTuple) { ExtendedZoneProcessor::normalizeDateTuple(&dtp); assertTrue((dtp == DateTuple{0, 1, 1, 0, ZoneContext::TIME_MODIFIER_W})); - dtp = {0, 1, 1, 95, ZoneContext::TIME_MODIFIER_W}; + dtp = {0, 1, 1, 15*95, ZoneContext::TIME_MODIFIER_W}; // 23:45 ExtendedZoneProcessor::normalizeDateTuple(&dtp); - assertTrue((dtp == DateTuple{0, 1, 1, 95, ZoneContext::TIME_MODIFIER_W})); + assertTrue((dtp == DateTuple{0, 1, 1, 15*95, ZoneContext::TIME_MODIFIER_W})); - dtp = {0, 1, 1, 96, ZoneContext::TIME_MODIFIER_W}; + dtp = {0, 1, 1, 15*96, ZoneContext::TIME_MODIFIER_W}; // 24:00 ExtendedZoneProcessor::normalizeDateTuple(&dtp); assertTrue((dtp == DateTuple{0, 1, 2, 0, ZoneContext::TIME_MODIFIER_W})); - dtp = {0, 1, 1, 97, ZoneContext::TIME_MODIFIER_W}; + dtp = {0, 1, 1, 15*97, ZoneContext::TIME_MODIFIER_W}; // 24:15 ExtendedZoneProcessor::normalizeDateTuple(&dtp); - assertTrue((dtp == DateTuple{0, 1, 2, 1, ZoneContext::TIME_MODIFIER_W})); + assertTrue((dtp == DateTuple{0, 1, 2, 15, ZoneContext::TIME_MODIFIER_W})); - dtp = {0, 1, 1, -96, ZoneContext::TIME_MODIFIER_W}; + dtp = {0, 1, 1, -15*96, ZoneContext::TIME_MODIFIER_W}; // -24:00 ExtendedZoneProcessor::normalizeDateTuple(&dtp); - assertTrue((dtp == DateTuple{-01, 12, 31, 0, ZoneContext::TIME_MODIFIER_W})); + assertTrue((dtp == DateTuple{-1, 12, 31, 0, ZoneContext::TIME_MODIFIER_W})); - dtp = {0, 1, 1, -97, ZoneContext::TIME_MODIFIER_W}; + dtp = {0, 1, 1, -15*97, ZoneContext::TIME_MODIFIER_W}; // -24:15 ExtendedZoneProcessor::normalizeDateTuple(&dtp); - assertTrue((dtp == DateTuple{-01, 12, 31, -1, ZoneContext::TIME_MODIFIER_W})); + assertTrue((dtp == DateTuple{-1, 12, 31, -15, ZoneContext::TIME_MODIFIER_W})); } test(ExtendedZoneProcessorTest, expandDateTuple) { @@ -334,25 +334,25 @@ test(ExtendedZoneProcessorTest, expandDateTuple) { int8_t offsetCode = 8; int8_t deltaCode = 4; - tt = {0, 1, 30, 12, ZoneContext::TIME_MODIFIER_W}; + tt = {0, 1, 30, 15*12, ZoneContext::TIME_MODIFIER_W}; // 03:00 ExtendedZoneProcessor::expandDateTuple(&tt, &tts, &ttu, offsetCode, deltaCode); - assertTrue((tt == DateTuple{0, 1, 30, 12, ZoneContext::TIME_MODIFIER_W})); - assertTrue((tts == DateTuple{0, 1, 30, 8, ZoneContext::TIME_MODIFIER_S})); + assertTrue((tt == DateTuple{0, 1, 30, 15*12, ZoneContext::TIME_MODIFIER_W})); + assertTrue((tts == DateTuple{0, 1, 30, 15*8, ZoneContext::TIME_MODIFIER_S})); assertTrue((ttu == DateTuple{0, 1, 30, 0, ZoneContext::TIME_MODIFIER_U})); - tt = {0, 1, 30, 8, ZoneContext::TIME_MODIFIER_S}; + tt = {0, 1, 30, 15*8, ZoneContext::TIME_MODIFIER_S}; ExtendedZoneProcessor::expandDateTuple(&tt, &tts, &ttu, offsetCode, deltaCode); - assertTrue((tt == DateTuple{0, 1, 30, 12, ZoneContext::TIME_MODIFIER_W})); - assertTrue((tts == DateTuple{0, 1, 30, 8, ZoneContext::TIME_MODIFIER_S})); + assertTrue((tt == DateTuple{0, 1, 30, 15*12, ZoneContext::TIME_MODIFIER_W})); + assertTrue((tts == DateTuple{0, 1, 30, 15*8, ZoneContext::TIME_MODIFIER_S})); assertTrue((ttu == DateTuple{0, 1, 30, 0, ZoneContext::TIME_MODIFIER_U})); tt = {0, 1, 30, 0, ZoneContext::TIME_MODIFIER_U}; ExtendedZoneProcessor::expandDateTuple(&tt, &tts, &ttu, offsetCode, deltaCode); - assertTrue((tt == DateTuple{0, 1, 30, 12, ZoneContext::TIME_MODIFIER_W})); - assertTrue((tts == DateTuple{0, 1, 30, 8, ZoneContext::TIME_MODIFIER_S})); + assertTrue((tt == DateTuple{0, 1, 30, 15*12, ZoneContext::TIME_MODIFIER_W})); + assertTrue((tts == DateTuple{0, 1, 30, 15*8, ZoneContext::TIME_MODIFIER_S})); assertTrue((ttu == DateTuple{0, 1, 30, 0, ZoneContext::TIME_MODIFIER_U})); } @@ -589,15 +589,15 @@ test(ExtendedZoneProcessorTest, findCandidateTransitions) { assertEqual(5, (int) (storage.getCandidatePoolEnd() - storage.getCandidatePoolBegin())); Transition** t = storage.getCandidatePoolBegin(); - assertTrue(((*t++)->transitionTime == DateTuple{18, 3, 11, 8, + assertTrue(((*t++)->transitionTime == DateTuple{18, 3, 11, 15*8, ZoneContext::TIME_MODIFIER_W})); - assertTrue(((*t++)->transitionTime == DateTuple{18, 11, 4, 8, + assertTrue(((*t++)->transitionTime == DateTuple{18, 11, 4, 15*8, ZoneContext::TIME_MODIFIER_W})); - assertTrue(((*t++)->transitionTime == DateTuple{19, 3, 10, 8, + assertTrue(((*t++)->transitionTime == DateTuple{19, 3, 10, 15*8, ZoneContext::TIME_MODIFIER_W})); - assertTrue(((*t++)->transitionTime == DateTuple{19, 11, 3, 8, + assertTrue(((*t++)->transitionTime == DateTuple{19, 11, 3, 15*8, ZoneContext::TIME_MODIFIER_W})); - assertTrue(((*t++)->transitionTime == DateTuple{20, 3, 8, 8, + assertTrue(((*t++)->transitionTime == DateTuple{20, 3, 8, 15*8, ZoneContext::TIME_MODIFIER_W})); } @@ -619,9 +619,9 @@ test(ExtendedZoneProcessorTest, findTransitionsFromNamedMatch) { Transition** t = storage.getActivePoolBegin(); assertTrue(((*t++)->transitionTime == DateTuple{18, 12, 1, 0, ZoneContext::TIME_MODIFIER_W})); - assertTrue(((*t++)->transitionTime == DateTuple{19, 3, 10, 8, + assertTrue(((*t++)->transitionTime == DateTuple{19, 3, 10, 15*8, ZoneContext::TIME_MODIFIER_W})); - assertTrue(((*t++)->transitionTime == DateTuple{19, 11, 3, 8, + assertTrue(((*t++)->transitionTime == DateTuple{19, 11, 3, 15*8, ZoneContext::TIME_MODIFIER_W})); } @@ -679,23 +679,23 @@ test(ExtendedZoneProcessorTest, fixTransitionTimes_generateStartUntilTimes) { ZoneContext::TIME_MODIFIER_W})); assertTrue((transition1->transitionTimeS == DateTuple{18, 12, 1, 0, ZoneContext::TIME_MODIFIER_S})); - assertTrue((transition1->transitionTimeU == DateTuple{18, 12, 1, 32, + assertTrue((transition1->transitionTimeU == DateTuple{18, 12, 1, 15*32, ZoneContext::TIME_MODIFIER_U})); // Second transition uses the UTC offset of the first. - assertTrue((transition2->transitionTime == DateTuple{19, 3, 10, 8, + assertTrue((transition2->transitionTime == DateTuple{19, 3, 10, 15*8, ZoneContext::TIME_MODIFIER_W})); - assertTrue((transition2->transitionTimeS == DateTuple{19, 3, 10, 8, + assertTrue((transition2->transitionTimeS == DateTuple{19, 3, 10, 15*8, ZoneContext::TIME_MODIFIER_S})); - assertTrue((transition2->transitionTimeU == DateTuple{19, 3, 10, 40, + assertTrue((transition2->transitionTimeU == DateTuple{19, 3, 10, 15*40, ZoneContext::TIME_MODIFIER_U})); // Third transition uses the UTC offset of the second. - assertTrue((transition3->transitionTime == DateTuple{19, 11, 3, 8, + assertTrue((transition3->transitionTime == DateTuple{19, 11, 3, 15*8, ZoneContext::TIME_MODIFIER_W})); - assertTrue((transition3->transitionTimeS == DateTuple{19, 11, 3, 4, + assertTrue((transition3->transitionTimeS == DateTuple{19, 11, 3, 15*4, ZoneContext::TIME_MODIFIER_S})); - assertTrue((transition3->transitionTimeU == DateTuple{19, 11, 3, 36, + assertTrue((transition3->transitionTimeU == DateTuple{19, 11, 3, 15*36, ZoneContext::TIME_MODIFIER_U})); // Generate the startDateTime and untilDateTime of the transitions. @@ -707,27 +707,27 @@ test(ExtendedZoneProcessorTest, fixTransitionTimes_generateStartUntilTimes) { ZoneContext::TIME_MODIFIER_W})); assertTrue((transition1->startDateTime == DateTuple{18, 12, 1, 0, ZoneContext::TIME_MODIFIER_W})); - assertTrue((transition1->untilDateTime == DateTuple{19, 3, 10, 8, + assertTrue((transition1->untilDateTime == DateTuple{19, 3, 10, 15*8, ZoneContext::TIME_MODIFIER_W})); acetime_t epochSecs = OffsetDateTime::forComponents( 2018, 12, 1, 0, 0, 0, TimeOffset::forHour(-8)).toEpochSeconds(); assertEqual(epochSecs, transition1->startEpochSeconds); // Second transition startTime is shifted forward one hour into PDT. - assertTrue((transition2->transitionTime == DateTuple{19, 3, 10, 8, + assertTrue((transition2->transitionTime == DateTuple{19, 3, 10, 15*8, ZoneContext::TIME_MODIFIER_W})); - assertTrue((transition2->startDateTime == DateTuple{19, 3, 10, 12, + assertTrue((transition2->startDateTime == DateTuple{19, 3, 10, 15*12, ZoneContext::TIME_MODIFIER_W})); - assertTrue((transition2->untilDateTime == DateTuple{19, 11, 3, 8, + assertTrue((transition2->untilDateTime == DateTuple{19, 11, 3, 15*8, ZoneContext::TIME_MODIFIER_W})); epochSecs = OffsetDateTime::forComponents( 2019, 3, 10, 3, 0, 0, TimeOffset::forHour(-7)).toEpochSeconds(); assertEqual(epochSecs, transition2->startEpochSeconds); // Third transition startTime is shifted back one hour into PST. - assertTrue((transition3->transitionTime == DateTuple{19, 11, 3, 8, + assertTrue((transition3->transitionTime == DateTuple{19, 11, 3, 15*8, ZoneContext::TIME_MODIFIER_W})); - assertTrue((transition3->startDateTime == DateTuple{19, 11, 3, 4, + assertTrue((transition3->startDateTime == DateTuple{19, 11, 3, 15*4, ZoneContext::TIME_MODIFIER_W})); assertTrue((transition3->untilDateTime == DateTuple{20, 2, 1, 0, ZoneContext::TIME_MODIFIER_W})); diff --git a/tests/TransitionStorageTest/TransitionStorageTest.ino b/tests/TransitionStorageTest/TransitionStorageTest.ino index 95b2640ec..325703c77 100644 --- a/tests/TransitionStorageTest/TransitionStorageTest.ino +++ b/tests/TransitionStorageTest/TransitionStorageTest.ino @@ -190,7 +190,7 @@ test(TransitionStorageTest, findTransition) { TransitionStorage<4> storage; storage.init(); - // Add 3 transitions to Candidate pool, 2 active, 1 inactive. + // Add 3 transitions to Active pool. Transition* freeAgent = storage.getFreeAgent(); freeAgent->transitionTime = {0, 1, 2, 3, ZoneContext::TIME_MODIFIER_W}; freeAgent->active = true; @@ -227,6 +227,68 @@ test(TransitionStorageTest, findTransition) { assertEqual(2, t->transitionTime.yearTiny); } +test(TransitionStorageTest, findTransitionForDateTime) { + TransitionStorage<4> storage; + storage.init(); + + // 2000-01-02T00:03 + Transition* freeAgent = storage.getFreeAgent(); + freeAgent->transitionTime = {0, 1, 2, 3, ZoneContext::TIME_MODIFIER_W}; + freeAgent->startDateTime = freeAgent->transitionTime; + freeAgent->active = true; + storage.addFreeAgentToCandidatePool(); + + // 2001-02-03T00:04 + freeAgent = storage.getFreeAgent(); + freeAgent->transitionTime = {1, 2, 3, 4, ZoneContext::TIME_MODIFIER_W}; + freeAgent->startDateTime = freeAgent->transitionTime; + freeAgent->active = true; + storage.addFreeAgentToCandidatePool(); + + // 2002-03-04T00:05 + freeAgent = storage.getFreeAgent(); + freeAgent->transitionTime = {2, 3, 4, 5, ZoneContext::TIME_MODIFIER_W}; + freeAgent->startDateTime = freeAgent->transitionTime; + freeAgent->active = true; + storage.addFreeAgentToCandidatePool(); + + // Add the actives to the Active pool. + storage.addActiveCandidatesToActivePool(); + + assertEqual(3, storage.mIndexPrior); + assertEqual(3, storage.mIndexCandidates); + assertEqual(3, storage.mIndexFree); + + // 2000-01-02T00:00 + auto ldt = LocalDateTime::forComponents(2000, 1, 2, 0, 0, 0); + const Transition* t = storage.findTransitionForDateTime(ldt); + assertTrue(t == nullptr); + + // 2000-01-02T01:00 + ldt = LocalDateTime::forComponents(2000, 1, 2, 1, 0, 0); + t = storage.findTransitionForDateTime(ldt); + assertTrue(t != nullptr); + assertEqual(0, t->transitionTime.yearTiny); + + // 2001-02-03T00:03 + ldt = LocalDateTime::forComponents(2001, 2, 3, 0, 3, 0); + t = storage.findTransitionForDateTime(ldt); + assertTrue(t != nullptr); + assertEqual(0, t->transitionTime.yearTiny); + + // 2001-02-03T00:04 + ldt = LocalDateTime::forComponents(2001, 2, 3, 0, 4, 0); + t = storage.findTransitionForDateTime(ldt); + assertTrue(t != nullptr); + assertEqual(1, t->transitionTime.yearTiny); + + // 2002-03-04T00:05 + ldt = LocalDateTime::forComponents(2002, 3, 4, 0, 5, 0); + t = storage.findTransitionForDateTime(ldt); + assertTrue(t != nullptr); + assertEqual(2, t->transitionTime.yearTiny); +} + test(TransitionStorageTest, resetCandidatePool) { TransitionStorage<4> storage; storage.init(); diff --git a/tests/ZonedDateTimeExtendedTest/ZonedDateTimeExtendedTest.ino b/tests/ZonedDateTimeExtendedTest/ZonedDateTimeExtendedTest.ino index 473d7ad39..43a8d3d01 100644 --- a/tests/ZonedDateTimeExtendedTest/ZonedDateTimeExtendedTest.ino +++ b/tests/ZonedDateTimeExtendedTest/ZonedDateTimeExtendedTest.ino @@ -69,6 +69,7 @@ test(ZonedDateTimeExtendedTest, forComponents_inDst) { // 03:01 should resolve to 03:01-07:00. auto dt = ZonedDateTime::forComponents(2018, 3, 11, 3, 1, 0, tz); assertEqual(TimeOffset::forHour(-7).toMinutes(), dt.timeOffset().toMinutes()); + dt.printTo(Serial); Serial.println(); auto expected = LocalDateTime::forComponents(2018, 3, 11, 3, 1, 0); assertTrue(expected == dt.localDateTime()); } @@ -122,6 +123,9 @@ void setup() { #endif SERIAL_PORT_MONITOR.begin(115200); // ESP8266 default of 74880 not supported on Linux while(!SERIAL_PORT_MONITOR); // for the Arduino Leonardo/Micro only + + TestRunner::exclude("*"); + TestRunner::include("ZonedDateTimeExtendedTest", "forComponents_inDst"); } void loop() { diff --git a/tools/argenerator.py b/tools/argenerator.py index 778d97763..7ca03f332 100644 --- a/tools/argenerator.py +++ b/tools/argenerator.py @@ -363,7 +363,8 @@ def _generate_policy_item(self, name, rules, indexed_letters): # Generate kZoneRules*[] rule_items = '' for rule in rules: - at_time_code = div_to_zero(rule.atSecondsTruncated, 15 * 60) + at_time_code, at_time_modifier = to_code_and_modifier( + rule.atSecondsTruncated, rule.atTimeModifier, self.scope) delta_code = div_to_zero(rule.deltaSecondsTruncated, 15 * 60) from_year = rule.fromYear @@ -394,7 +395,7 @@ def _generate_policy_item(self, name, rules, indexed_letters): onDayOfWeek=rule.onDayOfWeek, onDayOfMonth=rule.onDayOfMonth, atTimeCode=at_time_code, - atTimeModifier=to_modifier(rule.atTimeModifier, self.scope), + atTimeModifier=at_time_modifier, deltaCode=delta_code, letter=letter, letterComment=letterComment) @@ -819,8 +820,9 @@ def _generate_era_item(self, zone_name, era): if not until_day: until_day = 1 - until_time_code = div_to_zero(era.untilSecondsTruncated, 15 * 60) - until_time_modifier = to_modifier(era.untilTimeModifier, self.scope) + until_time_code, until_time_modifier = to_code_and_modifier( + era.untilSecondsTruncated, era.untilTimeModifier, self.scope) + offset_code = div_to_zero(era.offsetSecondsTruncated, 15 * 60) # Replace %s with just a % for C++ @@ -1060,19 +1062,6 @@ def generate_registry_h(self): dbHeaderNamespace=self.db_header_namespace, numZones=len(self.zones_map)) -def to_modifier(modifier, scope): - """Return the C++ TIME_MODIFIER_{X} corresponding to the 'w', 's', and 'u' - modifier character in the TZ database files. - """ - if modifier == 'w': - return f'{scope}::ZoneContext::TIME_MODIFIER_W' - elif modifier == 's': - return f'{scope}::ZoneContext::TIME_MODIFIER_S' - elif modifier == 'u': - return f'{scope}::ZoneContext::TIME_MODIFIER_U' - else: - raise Exception(f'Unknown modifier {modifier}') - def to_tiny_year(year): if year == MAX_YEAR: return MAX_YEAR_TINY @@ -1086,3 +1075,27 @@ def normalize_raw(raw_line): """Replace hard tabs with 4 spaces. """ return raw_line.replace('\t', ' ') + +def to_code_and_modifier(seconds, modifier, scope): + """Return the packed (code, modifier) uint8_t integers that hold + the timeCodeMajor, timeCodeMinor (resolution in minutes) and the modifier. + """ + codeMajor = div_to_zero(seconds, 15 * 60) + codeMinor = seconds % 900 // 60 + modifier = to_modifier(modifier, scope) + if codeMinor > 0: + modifier += f' + {codeMinor}' + return codeMajor, modifier + +def to_modifier(modifier, scope): + """Return the C++ TIME_MODIFIER_{X} corresponding to the 'w', 's', and 'u' + modifier character in the TZ database files. + """ + if modifier == 'w': + return f'{scope}::ZoneContext::TIME_MODIFIER_W' + elif modifier == 's': + return f'{scope}::ZoneContext::TIME_MODIFIER_S' + elif modifier == 'u': + return f'{scope}::ZoneContext::TIME_MODIFIER_U' + else: + raise Exception(f'Unknown modifier {modifier}') diff --git a/tools/tzcompiler.py b/tools/tzcompiler.py index a63f2b57d..2ca1c3ef9 100755 --- a/tools/tzcompiler.py +++ b/tools/tzcompiler.py @@ -188,7 +188,10 @@ def main(): granularity = args.granularity else: if args.language in ['arduino']: - granularity = 900 + if args.scope == 'basic': + granularity = 900 + else: + granularity = 60 else: granularity = 60 logging.info('Using granularity: %d' % granularity) From 103c32445bb7c0c470c67ec63163416687d1c580 Mon Sep 17 00:00:00 2001 From: Brian Park Date: Fri, 9 Aug 2019 18:52:33 -0700 Subject: [PATCH 11/55] tools: Disable corrections for 00:01 for 'extended' scope since 00:01 is fully supported now --- tools/tdgenerator.py | 8 ++++++-- tools/tzcompiler.py | 5 +++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/tools/tdgenerator.py b/tools/tdgenerator.py index d82302db9..10a919262 100644 --- a/tools/tdgenerator.py +++ b/tools/tdgenerator.py @@ -122,13 +122,15 @@ class TestDataGenerator: ], } - def __init__(self, zone_infos, zone_policies, granularity, start_year, - until_year): + def __init__(self, scope, zone_infos, zone_policies, granularity, + start_year, until_year): """ Args: + scope: 'basic' or 'extended' zone_infos (dict): {zone_name -> zone_info{} } zone_policies (dict): {zone_name ->zone_policy{} } """ + self.scope = scope self.zone_infos = zone_infos self.zone_policies = zone_policies self.granularity = granularity @@ -273,6 +275,8 @@ def _get_correction(self, zone_name, tt): 15 minutes, then the various transition times got truncated to 00:00 and the correction will be 60 seconds. """ + if self.scope == 'extended': + return 0 if self.granularity <= 60: return 0 diff --git a/tools/tzcompiler.py b/tools/tzcompiler.py index 2ca1c3ef9..8d575044c 100755 --- a/tools/tzcompiler.py +++ b/tools/tzcompiler.py @@ -296,8 +296,9 @@ def main(): # Generate test data for unit test. logging.info('Generating test data for years in [%d, %d)', validation_start_year, validation_until_year) - data_generator = TestDataGenerator(zone_infos, zone_policies, - granularity, validation_start_year, validation_until_year) + data_generator = TestDataGenerator(args.scope, zone_infos, + zone_policies, granularity, validation_start_year, + validation_until_year) (test_data, num_items) = data_generator.create_test_data() logging.info('Num zones=%d; Num test items=%d', len(test_data), num_items) From 88ee73f7876dc22759530285cf58962576ac4489 Mon Sep 17 00:00:00 2001 From: Brian Park Date: Fri, 9 Aug 2019 19:30:06 -0700 Subject: [PATCH 12/55] tools: Set granularity for basic zoneinfo files to 1-minute, now supported by BasicZoneProcessor --- src/ace_time/zonedb/zone_infos.h | 3 +-- src/ace_time/zonedb/zone_policies.cpp | 4 ++-- src/ace_time/zonedb/zone_policies.h | 3 +-- tools/tdgenerator.py | 3 +-- tools/tzcompiler.py | 8 +------- 5 files changed, 6 insertions(+), 15 deletions(-) diff --git a/src/ace_time/zonedb/zone_infos.h b/src/ace_time/zonedb/zone_infos.h index e3f9b3f07..47ec33081 100644 --- a/src/ace_time/zonedb/zone_infos.h +++ b/src/ace_time/zonedb/zone_infos.h @@ -616,10 +616,9 @@ extern const basic::ZoneInfo& kZoneZulu; // Zulu -> Etc/UTC //--------------------------------------------------------------------------- -// Inaccurate zones: 1 +// Inaccurate zones: 0 //--------------------------------------------------------------------------- -// America/Moncton (AT time '0:01' of RULE 'Moncton' truncated to '00:00') //--------------------------------------------------------------------------- diff --git a/src/ace_time/zonedb/zone_policies.cpp b/src/ace_time/zonedb/zone_policies.cpp index 5119f5717..cf9c4a8d1 100644 --- a/src/ace_time/zonedb/zone_policies.cpp +++ b/src/ace_time/zonedb/zone_policies.cpp @@ -3902,7 +3902,7 @@ static const basic::ZoneRule kZoneRulesMoncton[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W + 1 /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -3914,7 +3914,7 @@ static const basic::ZoneRule kZoneRulesMoncton[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W + 1 /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, diff --git a/src/ace_time/zonedb/zone_policies.h b/src/ace_time/zonedb/zone_policies.h index 048922a00..77664fa9d 100644 --- a/src/ace_time/zonedb/zone_policies.h +++ b/src/ace_time/zonedb/zone_policies.h @@ -167,9 +167,8 @@ extern const basic::ZonePolicy kPolicyZion; // kPolicyWS (unused) -// Inaccurate zone policies: 1 +// Inaccurate zone policies: 0 // -// kPolicyMoncton (AT time '0:01' truncated to '00:00') } diff --git a/tools/tdgenerator.py b/tools/tdgenerator.py index 10a919262..c7a04c366 100644 --- a/tools/tdgenerator.py +++ b/tools/tdgenerator.py @@ -275,8 +275,7 @@ def _get_correction(self, zone_name, tt): 15 minutes, then the various transition times got truncated to 00:00 and the correction will be 60 seconds. """ - if self.scope == 'extended': - return 0 + return 0 if self.granularity <= 60: return 0 diff --git a/tools/tzcompiler.py b/tools/tzcompiler.py index 8d575044c..de7f043a2 100755 --- a/tools/tzcompiler.py +++ b/tools/tzcompiler.py @@ -187,13 +187,7 @@ def main(): if args.granularity: granularity = args.granularity else: - if args.language in ['arduino']: - if args.scope == 'basic': - granularity = 900 - else: - granularity = 60 - else: - granularity = 60 + granularity = 60 logging.info('Using granularity: %d' % granularity) # Extract the TZ files From e027a190fabeef480a7e12b9ec3b1351fd40b846 Mon Sep 17 00:00:00 2001 From: Brian Park Date: Fri, 9 Aug 2019 20:07:32 -0700 Subject: [PATCH 13/55] tools: Remove corrections for timezones using AT or UNTIL times of 00:01, now supported by BasicZoneProcessor and ExtendedZoneProcessor --- tools/java/TestDataGenerator.java | 167 ++++----------------------- tools/tdgenerator.py | 183 ++++-------------------------- 2 files changed, 44 insertions(+), 306 deletions(-) diff --git a/tools/java/TestDataGenerator.java b/tools/java/TestDataGenerator.java index cb4196be8..3c352bacd 100644 --- a/tools/java/TestDataGenerator.java +++ b/tools/java/TestDataGenerator.java @@ -244,37 +244,17 @@ private static void addTestItemsFromTransitions(Map testItems break; } - // Get transition time correction, if any. - int correctionOffset = getCorrectionOffset(zoneId, transitionDateTime); + // Get transition time Instant currentInstant = transition.getInstant(); // One second before the transition, and at the transition - addTestItem(testItems, currentInstant.minusSeconds(1), correctionOffset, zoneId, - (correctionOffset == 0) ? 'A' : 'a'); - addTestItem(testItems, currentInstant, correctionOffset, zoneId, - (correctionOffset == 0) ? 'B' : 'b'); + addTestItem(testItems, currentInstant.minusSeconds(1), zoneId, 'A'); + addTestItem(testItems, currentInstant, zoneId, 'B'); prevInstant = currentInstant; } } - /** - * Get correction offset (if any) at the given transitionDateTime for the zoneId. The - * transitionDateTime comes from java.time.ZoneId. The correction offset is the number of seconds - * that we must *subtract* from the transitionDateTime to get the dateTime used by AceTime - * library. - */ - private static int getCorrectionOffset(ZoneId zoneId, LocalDateTime transitionDateTime) { - String name = zoneId.getId(); - Map corrections = CORRECTIONS.get(name); - if (corrections == null) return 0; - - Integer correction = corrections.get(transitionDateTime); - if (correction == null) return 0; - - return correction; - } - /** Add intervening sample test items from startInstant to untilInstant for zoneId. */ private static void addTestItemsFromSampling(Map testItems, ZoneId zoneId, Instant startInstant, Instant untilInstant) { @@ -286,58 +266,45 @@ private static void addTestItemsFromSampling(Map testItems, Z for (int month = 1; month <= 12; month++) { LocalDateTime localDateTime = LocalDateTime.of(year, month, 1, 0, 0, 0); ZonedDateTime zonedDateTime = ZonedDateTime.of(localDateTime, zoneId); - int correctionOffset = getCorrectionOffset(zoneId, localDateTime); - addTestItem(testItems, zonedDateTime.toInstant(), correctionOffset, zoneId, 'S'); + addTestItem(testItems, zonedDateTime.toInstant(), zoneId, 'S'); } // Add last day and hour of the year ({year}-12-31-23:00:00) LocalDateTime localDateTime = LocalDateTime.of(year, 12, 31, 23, 0, 0); ZonedDateTime zonedDateTime = ZonedDateTime.of(localDateTime, zoneId); - int correctionOffset = getCorrectionOffset(zoneId, localDateTime); - addTestItem(testItems, zonedDateTime.toInstant(), correctionOffset, zoneId, 'Y'); + addTestItem(testItems, zonedDateTime.toInstant(), zoneId, 'Y'); } } /** - * Add the TestItem at actualInstant, with the epoch_seconds, UTC offset, and DST shift calculated - * at actualInstant, but the date and time components are calculated from the - * actualDateTime.minus(truncationCorrection). + * Add the TestItem at instant, with the epoch_seconds, UTC offset, and DST shift. */ - private static void addTestItem(Map testItems, Instant actualInstant, - int truncationCorrection, ZoneId zoneId, char type) { - TestItem testItem = createTestItem(actualInstant, truncationCorrection, zoneId, type); + private static void addTestItem(Map testItems, Instant instant, + ZoneId zoneId, char type) { + TestItem testItem = createTestItem(instant, zoneId, type); if (testItems.containsKey(testItem.epochSeconds)) return; testItems.put(testItem.epochSeconds, testItem); } - /** - * Create a test item using the actualInstant to determine the offsets, but using - * truncatedDateTime when creating the TestItem object. This supports zones whose transition - * occurs at 00:01, which AceTime truncates to 00:00. - */ - private static TestItem createTestItem(Instant actualInstant, int truncationCorrection, - ZoneId zoneId, char type) { - // Calculate the offsets using the accurate actualInstant + /** Create a test item using the instant to determine the offsets. */ + private static TestItem createTestItem(Instant instant, ZoneId zoneId, char type) { + // Calculate the offsets using the instant ZoneRules rules = zoneId.getRules(); - Duration dst = rules.getDaylightSavings(actualInstant); - ZoneOffset offset = rules.getOffset(actualInstant); + Duration dst = rules.getDaylightSavings(instant); + ZoneOffset offset = rules.getOffset(instant); - // Calculate the truncatedDateTime reported by the AceTime library using the - // truncationCorrection. - ZonedDateTime actualDateTime = ZonedDateTime.ofInstant(actualInstant, zoneId); - LocalDateTime truncatedDateTime = - actualDateTime.toLocalDateTime().minusSeconds(truncationCorrection); + // Convert instant to dateTime components. + ZonedDateTime dateTime = ZonedDateTime.ofInstant(instant, zoneId); TestItem item = new TestItem(); - item.epochSeconds = (int) (actualInstant.getEpochSecond() - truncationCorrection - - SECONDS_SINCE_UNIX_EPOCH); + item.epochSeconds = (int) (instant.getEpochSecond() - SECONDS_SINCE_UNIX_EPOCH); item.utcOffset = offset.getTotalSeconds() / 60; item.dstOffset = (int) dst.getSeconds() / 60; - item.year = truncatedDateTime.getYear(); - item.month = truncatedDateTime.getMonthValue(); - item.day = truncatedDateTime.getDayOfMonth(); - item.hour = truncatedDateTime.getHour(); - item.minute = truncatedDateTime.getMinute(); - item.second = truncatedDateTime.getSecond(); + item.year = dateTime.getYear(); + item.month = dateTime.getMonthValue(); + item.day = dateTime.getDayOfMonth(); + item.hour = dateTime.getHour(); + item.minute = dateTime.getMinute(); + item.second = dateTime.getSecond(); item.type = type; return item; @@ -521,94 +488,6 @@ private void printTestsCpp(Map> testData) throws IOExcept private void printTestsCppInactiveEntry(PrintWriter writer, String zoneName) { } - // List of transition corrections, serving the same function as the CORRECTIONS parameter in - // tdgeneartor.py. Normally I would use an ImmutableMap<> but to avoid dependency to any external - // libraries like Guava, I create this static map using old-school techniques. - // - // The LocalDateTime is the expected transition date from java.time.ZoneId. The Integer correction - // is the number of seconds that the LocalDateTime needs to be shifted BACK to get the transition - // calculated by AceTime. - private static final Map> CORRECTIONS = new HashMap<>(); - { - Map GAZA = new HashMap<>(); - GAZA.put(LocalDateTime.of(2010, 3, 27, 0, 1), 60); - GAZA.put(LocalDateTime.of(2011, 4, 1, 0, 1), 60); - CORRECTIONS.put("Asia/Gaza", GAZA); - - Map GOOSE_BAY = new HashMap<>(); - GOOSE_BAY.put(LocalDateTime.of(2000, 4, 2, 0, 1), 60); - GOOSE_BAY.put(LocalDateTime.of(2000, 10, 29, 0, 1), 60); - GOOSE_BAY.put(LocalDateTime.of(2001, 4, 1, 0, 1), 60); - GOOSE_BAY.put(LocalDateTime.of(2001, 10, 28, 0, 1), 60); - GOOSE_BAY.put(LocalDateTime.of(2002, 4, 7, 0, 1), 60); - GOOSE_BAY.put(LocalDateTime.of(2002, 10, 27, 0, 1), 60); - GOOSE_BAY.put(LocalDateTime.of(2003, 4, 6, 0, 1), 60); - GOOSE_BAY.put(LocalDateTime.of(2003, 10, 26, 0, 1), 60); - GOOSE_BAY.put(LocalDateTime.of(2004, 4, 4, 0, 1), 60); - GOOSE_BAY.put(LocalDateTime.of(2004, 10, 31, 0, 1), 60); - GOOSE_BAY.put(LocalDateTime.of(2005, 4, 3, 0, 1), 60); - GOOSE_BAY.put(LocalDateTime.of(2005, 10, 30, 0, 1), 60); - GOOSE_BAY.put(LocalDateTime.of(2006, 4, 2, 0, 1), 60); - GOOSE_BAY.put(LocalDateTime.of(2006, 10, 29, 0, 1), 60); - GOOSE_BAY.put(LocalDateTime.of(2007, 3, 11, 0, 1), 60); - GOOSE_BAY.put(LocalDateTime.of(2007, 11, 4, 0, 1), 60); - GOOSE_BAY.put(LocalDateTime.of(2008, 3, 9, 0, 1), 60); - GOOSE_BAY.put(LocalDateTime.of(2008, 11, 2, 0, 1), 60); - GOOSE_BAY.put(LocalDateTime.of(2009, 3, 8, 0, 1), 60); - GOOSE_BAY.put(LocalDateTime.of(2009, 11, 1, 0, 1), 60); - GOOSE_BAY.put(LocalDateTime.of(2010, 3, 14, 0, 1), 60); - GOOSE_BAY.put(LocalDateTime.of(2010, 11, 7, 0, 1), 60); - GOOSE_BAY.put(LocalDateTime.of(2011, 3, 13, 0, 1), 60); - CORRECTIONS.put("America/Goose_Bay", GOOSE_BAY); - - Map HEBRON = new HashMap<>(); - HEBRON.put(LocalDateTime.of(2011, 4, 1, 0, 1), 60); - CORRECTIONS.put("Asia/Hebron", HEBRON); - - Map MONCTON = new HashMap<>(); - MONCTON.put(LocalDateTime.of(2000, 4, 2, 0, 1), 60); - MONCTON.put(LocalDateTime.of(2000, 10, 29, 0, 1), 60); - MONCTON.put(LocalDateTime.of(2001, 4, 1, 0, 1), 60); - MONCTON.put(LocalDateTime.of(2001, 10, 28, 0, 1), 60); - MONCTON.put(LocalDateTime.of(2002, 4, 7, 0, 1), 60); - MONCTON.put(LocalDateTime.of(2002, 10, 27, 0, 1), 60); - MONCTON.put(LocalDateTime.of(2003, 4, 6, 0, 1), 60); - MONCTON.put(LocalDateTime.of(2003, 10, 26, 0, 1), 60); - MONCTON.put(LocalDateTime.of(2004, 4, 4, 0, 1), 60); - MONCTON.put(LocalDateTime.of(2004, 10, 31, 0, 1), 60); - MONCTON.put(LocalDateTime.of(2005, 4, 3, 0, 1), 60); - MONCTON.put(LocalDateTime.of(2005, 10, 30, 0, 1), 60); - MONCTON.put(LocalDateTime.of(2006, 4, 2, 0, 1), 60); - MONCTON.put(LocalDateTime.of(2006, 10, 29, 0, 1), 60); - CORRECTIONS.put("America/Moncton", MONCTON); - - Map ST_JOHNS = new HashMap<>(); - ST_JOHNS.put(LocalDateTime.of(2000, 4, 2, 0, 1), 60); - ST_JOHNS.put(LocalDateTime.of(2000, 10, 29, 0, 1), 60); - ST_JOHNS.put(LocalDateTime.of(2001, 4, 1, 0, 1), 60); - ST_JOHNS.put(LocalDateTime.of(2001, 10, 28, 0, 1), 60); - ST_JOHNS.put(LocalDateTime.of(2002, 4, 7, 0, 1), 60); - ST_JOHNS.put(LocalDateTime.of(2002, 10, 27, 0, 1), 60); - ST_JOHNS.put(LocalDateTime.of(2003, 4, 6, 0, 1), 60); - ST_JOHNS.put(LocalDateTime.of(2003, 10, 26, 0, 1), 60); - ST_JOHNS.put(LocalDateTime.of(2004, 4, 4, 0, 1), 60); - ST_JOHNS.put(LocalDateTime.of(2004, 10, 31, 0, 1), 60); - ST_JOHNS.put(LocalDateTime.of(2005, 4, 3, 0, 1), 60); - ST_JOHNS.put(LocalDateTime.of(2005, 10, 30, 0, 1), 60); - ST_JOHNS.put(LocalDateTime.of(2006, 4, 2, 0, 1), 60); - ST_JOHNS.put(LocalDateTime.of(2006, 10, 29, 0, 1), 60); - ST_JOHNS.put(LocalDateTime.of(2007, 3, 11, 0, 1), 60); - ST_JOHNS.put(LocalDateTime.of(2007, 11, 4, 0, 1), 60); - ST_JOHNS.put(LocalDateTime.of(2008, 3, 9, 0, 1), 60); - ST_JOHNS.put(LocalDateTime.of(2008, 11, 2, 0, 1), 60); - ST_JOHNS.put(LocalDateTime.of(2009, 3, 8, 0, 1), 60); - ST_JOHNS.put(LocalDateTime.of(2009, 11, 1, 0, 1), 60); - ST_JOHNS.put(LocalDateTime.of(2010, 3, 14, 0, 1), 60); - ST_JOHNS.put(LocalDateTime.of(2010, 11, 7, 0, 1), 60); - ST_JOHNS.put(LocalDateTime.of(2011, 3, 13, 0, 1), 60); - CORRECTIONS.put("America/St_Johns", ST_JOHNS); - } - // constructor parameters private final String invocation; private final String scope; diff --git a/tools/tdgenerator.py b/tools/tdgenerator.py index c7a04c366..78180728e 100644 --- a/tools/tdgenerator.py +++ b/tools/tdgenerator.py @@ -22,106 +22,6 @@ class TestDataGenerator: stability which we can use to test other versions of ZoneSpecifier. """ - # The following zones have transitions which occurs at a time which is not a - # multiple of 15 minutes, so cannot be represented by the C++ TimeOffset - # object. In all cases below, the actual transition occurs at 00:01, but the - # Transformer filter truncated the transition time to the nearest 15-minute - # towards 00:00. To produce the correct validation_data.cpp data file, - # for the transitions appearing below, we must shift the actual transition - # time to 00:01 before calling the timezone object in PyTz. - # - # The first value of the 2-tuple is a DateTuple that marks the - # 'transitionTime' of the current Transition (usually the wall time, using - # the UTC offset of the *previous* Transition), as determined by the - # (Python) ZoneSpecifier class. Since the algorithm in ZoneSpecifier already - # truncates the transition time, this will be the transition time *after* - # the granularity truncation has been applied. In other words, if the actual - # transitionTime according to the TZ Database was 00:01, then the first - # component will be stored as 00:00. (The DateTuple[3] component is 'ss' - # which is the transitionTime in seconds.) - # - # The second value of the 2-tuple is the amount of offset (in seconds) that - # should be added to the transitionTime to get the corrected transitionTime - # which should be passed to pytz to determine the expected UTC offset. - # - # NOTE: Using a dict {} might make the look up faster than using a - # sequential scan through the DateTuple. - CORRECTIONS = { - 'Asia/Gaza': [ - (DateTuple(2010, 3, 27, 0, 'w'), 60), - (DateTuple(2011, 4, 1, 0, 'w'), 60), - ], - 'America/Goose_Bay': [ - (DateTuple(2000, 4, 2, 0, 'w'), 60), - (DateTuple(2000, 10, 29, 0, 'w'), 60), - (DateTuple(2001, 4, 1, 0, 'w'), 60), - (DateTuple(2001, 10, 28, 0, 'w'), 60), - (DateTuple(2002, 4, 7, 0, 'w'), 60), - (DateTuple(2002, 10, 27, 0, 'w'), 60), - (DateTuple(2003, 4, 6, 0, 'w'), 60), - (DateTuple(2003, 10, 26, 0, 'w'), 60), - (DateTuple(2004, 4, 4, 0, 'w'), 60), - (DateTuple(2004, 10, 31, 0, 'w'), 60), - (DateTuple(2005, 4, 3, 0, 'w'), 60), - (DateTuple(2005, 10, 30, 0, 'w'), 60), - (DateTuple(2006, 4, 2, 0, 'w'), 60), - (DateTuple(2006, 10, 29, 0, 'w'), 60), - (DateTuple(2007, 3, 11, 0, 'w'), 60), - (DateTuple(2007, 11, 4, 0, 'w'), 60), - (DateTuple(2008, 3, 9, 0, 'w'), 60), - (DateTuple(2008, 11, 2, 0, 'w'), 60), - (DateTuple(2009, 3, 8, 0, 'w'), 60), - (DateTuple(2009, 11, 1, 0, 'w'), 60), - (DateTuple(2010, 3, 14, 0, 'w'), 60), - (DateTuple(2010, 11, 7, 0, 'w'), 60), - (DateTuple(2011, 3, 13, 0, 'w'), 60), - ], - 'Asia/Hebron': [ - (DateTuple(2011, 4, 1, 0, 'w'), 60), - ], - 'America/Moncton': [ - (DateTuple(2000, 4, 2, 0, 'w'), 60), - (DateTuple(2000, 10, 29, 0, 'w'), 60), - (DateTuple(2001, 4, 1, 0, 'w'), 60), - (DateTuple(2001, 10, 28, 0, 'w'), 60), - (DateTuple(2002, 4, 7, 0, 'w'), 60), - (DateTuple(2002, 10, 27, 0, 'w'), 60), - (DateTuple(2003, 4, 6, 0, 'w'), 60), - (DateTuple(2003, 10, 26, 0, 'w'), 60), - (DateTuple(2004, 4, 4, 0, 'w'), 60), - (DateTuple(2004, 10, 31, 0, 'w'), 60), - (DateTuple(2005, 4, 3, 0, 'w'), 60), - (DateTuple(2005, 10, 30, 0, 'w'), 60), - (DateTuple(2006, 4, 2, 0, 'w'), 60), - (DateTuple(2006, 10, 29, 0, 'w'), 60), - ], - 'America/St_Johns': [ - (DateTuple(2000, 4, 2, 0, 'w'), 60), - (DateTuple(2000, 10, 29, 0, 'w'), 60), - (DateTuple(2001, 4, 1, 0, 'w'), 60), - (DateTuple(2001, 10, 28, 0, 'w'), 60), - (DateTuple(2002, 4, 7, 0, 'w'), 60), - (DateTuple(2002, 10, 27, 0, 'w'), 60), - (DateTuple(2003, 4, 6, 0, 'w'), 60), - (DateTuple(2003, 10, 26, 0, 'w'), 60), - (DateTuple(2004, 4, 4, 0, 'w'), 60), - (DateTuple(2004, 10, 31, 0, 'w'), 60), - (DateTuple(2005, 4, 3, 0, 'w'), 60), - (DateTuple(2005, 10, 30, 0, 'w'), 60), - (DateTuple(2006, 4, 2, 0, 'w'), 60), - (DateTuple(2006, 10, 29, 0, 'w'), 60), - (DateTuple(2007, 3, 11, 0, 'w'), 60), - (DateTuple(2007, 11, 4, 0, 'w'), 60), - (DateTuple(2008, 3, 9, 0, 'w'), 60), - (DateTuple(2008, 11, 2, 0, 'w'), 60), - (DateTuple(2009, 3, 8, 0, 'w'), 60), - (DateTuple(2009, 11, 1, 0, 'w'), 60), - (DateTuple(2010, 3, 14, 0, 'w'), 60), - (DateTuple(2010, 11, 7, 0, 'w'), 60), - (DateTuple(2011, 3, 13, 0, 'w'), 60), - ], - } - def __init__(self, scope, zone_infos, zone_policies, granularity, start_year, until_year): """ @@ -202,8 +102,6 @@ def _create_transition_test_items(self, zone_name, tz, zone_specifier): * A test point one second before the transition. Each TestData is annotated as: - * 'a': corrected pre-transition - * 'b': corrected post-transition * 'A': pre-transition * 'B': post-transition * 'S': a monthly test sample @@ -233,60 +131,36 @@ def _create_transition_test_items(self, zone_name, tz, zone_specifier): if start.M == 1 and start.d == 1 and start.ss == 0: continue - correction = self._get_correction( - zone_name, transition.transitionTime) - epoch_seconds = transition.startEpochSecond # Add a test data just before the transition test_item = self._create_test_item_from_epoch_seconds( - tz, epoch_seconds - 1, correction, - 'a' if correction else 'A') + tz, epoch_seconds - 1, 'A') self._add_test_item(items_map, test_item) # Add a test data at the transition itself (which will # normally be shifted forward or backwards). test_item = self._create_test_item_from_epoch_seconds( - tz, epoch_seconds, correction, 'b' if correction else 'B') + tz, epoch_seconds, 'B') self._add_test_item(items_map, test_item) # Add one sample test point on the first of each month for month in range(1, 13): tt = DateTuple(y=year, M=month, d=1, ss=0, f='w') - correction = self._get_correction(zone_name, tt) test_item = self._create_test_item_from_datetime( - tz, tt, correction, type='S') + tz, tt, type='S') self._add_test_item(items_map, test_item) # Add a sample test point at the end of the year. tt = DateTuple(y=year, M=12, d=31, ss=23*3600, f='w') - correction = self._get_correction(zone_name, tt) test_item = self._create_test_item_from_datetime( - tz, tt, correction, type='Y') + tz, tt, type='Y') self._add_test_item(items_map, test_item) # Return the TestItems ordered by epoch return [items_map[x] for x in sorted(items_map)] - def _get_correction(self, zone_name, tt): - """Given the DateTuple of interest, return the correction (in seconds) - due to truncation of the transition time caused by the granularity. For - example, if the actual transition time was 00:01, but the granularity is - 15 minutes, then the various transition times got truncated to 00:00 and - the correction will be 60 seconds. - """ - return 0 - if self.granularity <= 60: - return 0 - - correction_list = TestDataGenerator.CORRECTIONS.get(zone_name) - if correction_list: - for correction in correction_list: - if tt == correction[0]: - return correction[1] - return 0 - - def _create_test_item_from_datetime(self, tz, tt, correction, type): + def _create_test_item_from_datetime(self, tz, tt, type): """Create a TestItem for the given DateTuple in the local time zone. """ # Can't use the normal datetime constructor for pytz. Must use @@ -296,24 +170,14 @@ def _create_test_item_from_datetime(self, tz, tt, correction, type): unix_seconds = int(dt.timestamp()) epoch_seconds = unix_seconds - SECONDS_SINCE_UNIX_EPOCH return self._create_test_item_from_epoch_seconds( - tz, epoch_seconds, correction, type) + tz, epoch_seconds, type) - def _create_test_item_from_epoch_seconds(self, tz, epoch_seconds, - correction, type): + def _create_test_item_from_epoch_seconds(self, tz, epoch_seconds, type): """Determine the expected date and time components for the given 'epoch_seconds' for the given 'tz'. The 'epoch_seconds' is the transition time calculated by the ZoneSpecifier class (which is the - Python implementation of the C++ ExtendedZoneSpecifier class). That - epoch_seconds will be off by 'correction' seconds (usually 60 seconds) - for a handful of zones at small number of transitions because - ZoneSpecifier truncates transition time to multiples of 15 minutes. For - example, a transition time of 00:01 will be truncated to 00:00. - - To calculate the expected date & time components using pytz, the actual - transition time must be corrected using 'epoch_seconds + correction', - and this corrected epoch_seconds must be given to pytz to retrieve the - expected DST offsets. + Python implementation of the C++ ExtendedZoneSpecifier class). Return the TestItem with the following fields: epoch: epoch seconds from AceTime epoch (2000-01-01T00:00:00Z) @@ -326,27 +190,22 @@ def _create_test_item_from_epoch_seconds(self, tz, epoch_seconds, # Convert AceTime epoch_seconds to Unix epoch_seconds. unix_seconds = epoch_seconds + SECONDS_SINCE_UNIX_EPOCH - # Shift the epoch seconds by its correction to get the actual transition - # time, then feed that into pytz to get the total offset and DST shift - corrected_utc_dt = datetime.datetime.fromtimestamp( - unix_seconds + correction, tz=datetime.timezone.utc) - corrected_dt = corrected_utc_dt.astimezone(tz) - total_offset = int(corrected_dt.utcoffset().total_seconds()) - dst_offset = int(corrected_dt.dst().total_seconds()) - - # The expected YMDHMS components (from AceTime) are determined by taking - # the corrected datetime (from pytz), and shifting back by the given - # correction. - rdt = corrected_dt - timedelta(seconds=correction) + # Get the transition time, then feed that into pytz to get the + # total offset and DST shift + utc_dt = datetime.datetime.fromtimestamp( + unix_seconds, tz=datetime.timezone.utc) + dt = utc_dt.astimezone(tz) + total_offset = int(dt.utcoffset().total_seconds()) + dst_offset = int(dt.dst().total_seconds()) return TestItem( epoch=epoch_seconds, total_offset=total_offset, dst_offset=dst_offset, - y=rdt.year, - M=rdt.month, - d=rdt.day, - h=rdt.hour, - m=rdt.minute, - s=rdt.second, + y=dt.year, + M=dt.month, + d=dt.day, + h=dt.hour, + m=dt.minute, + s=dt.second, type=type) From 73e234ae4bb21bfe1c8f5b405690e5271c4e1dad Mon Sep 17 00:00:00 2001 From: Brian Park Date: Fri, 9 Aug 2019 20:08:30 -0700 Subject: [PATCH 14/55] tests/validation: Regenerate zonedb files without corrections for 00:01 AT or UNTIL times --- .../zonedb2018g/zone_infos.h | 3 +-- .../zonedb2018g/zone_policies.cpp | 4 ++-- .../zonedb2018g/zone_policies.h | 3 +-- .../zonedbx2018g/zone_infos.cpp | 2 +- .../zonedbx2018g/zone_infos.h | 7 +------ .../zonedbx2018g/zone_policies.cpp | 16 ++++++++-------- .../zonedbx2018g/zone_policies.h | 5 +---- 7 files changed, 15 insertions(+), 25 deletions(-) diff --git a/tests/validation/BasicValidationUsingJavaTest/zonedb2018g/zone_infos.h b/tests/validation/BasicValidationUsingJavaTest/zonedb2018g/zone_infos.h index 150d375d4..63b24769a 100644 --- a/tests/validation/BasicValidationUsingJavaTest/zonedb2018g/zone_infos.h +++ b/tests/validation/BasicValidationUsingJavaTest/zonedb2018g/zone_infos.h @@ -615,10 +615,9 @@ extern const basic::ZoneInfo& kZoneZulu; // Zulu -> Etc/UTC //--------------------------------------------------------------------------- -// Inaccurate zones: 1 +// Inaccurate zones: 0 //--------------------------------------------------------------------------- -// America/Moncton (AT time '0:01' of RULE 'Moncton' truncated to '00:00') //--------------------------------------------------------------------------- diff --git a/tests/validation/BasicValidationUsingJavaTest/zonedb2018g/zone_policies.cpp b/tests/validation/BasicValidationUsingJavaTest/zonedb2018g/zone_policies.cpp index a95b667cb..002b29e63 100644 --- a/tests/validation/BasicValidationUsingJavaTest/zonedb2018g/zone_policies.cpp +++ b/tests/validation/BasicValidationUsingJavaTest/zonedb2018g/zone_policies.cpp @@ -3734,7 +3734,7 @@ static const basic::ZoneRule kZoneRulesMoncton[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W + 1 /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -3746,7 +3746,7 @@ static const basic::ZoneRule kZoneRulesMoncton[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, + basic::ZoneContext::TIME_MODIFIER_W + 1 /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, diff --git a/tests/validation/BasicValidationUsingJavaTest/zonedb2018g/zone_policies.h b/tests/validation/BasicValidationUsingJavaTest/zonedb2018g/zone_policies.h index 641323046..295ef21ef 100644 --- a/tests/validation/BasicValidationUsingJavaTest/zonedb2018g/zone_policies.h +++ b/tests/validation/BasicValidationUsingJavaTest/zonedb2018g/zone_policies.h @@ -166,9 +166,8 @@ extern const basic::ZonePolicy kPolicyZion; // kPolicyWS (unused) -// Inaccurate zone policies: 1 +// Inaccurate zone policies: 0 // -// kPolicyMoncton (AT time '0:01' truncated to '00:00') } diff --git a/tests/validation/ExtendedValidationUsingJavaTest/zonedbx2018g/zone_infos.cpp b/tests/validation/ExtendedValidationUsingJavaTest/zonedbx2018g/zone_infos.cpp index 1099de77f..61f4914ef 100644 --- a/tests/validation/ExtendedValidationUsingJavaTest/zonedbx2018g/zone_infos.cpp +++ b/tests/validation/ExtendedValidationUsingJavaTest/zonedbx2018g/zone_infos.cpp @@ -8596,7 +8596,7 @@ static const extended::ZoneEra kZoneEraAsia_Gaza[] ACE_TIME_PROGMEM = { 3 /*untilMonth*/, 27 /*untilDay*/, 0 /*untilTimeCode*/, - extended::ZoneContext::TIME_MODIFIER_W /*untilTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W + 1 /*untilTimeModifier*/, }, // 2:00 Palestine EE%sT 2011 Aug 1 { diff --git a/tests/validation/ExtendedValidationUsingJavaTest/zonedbx2018g/zone_infos.h b/tests/validation/ExtendedValidationUsingJavaTest/zonedbx2018g/zone_infos.h index 36e815eb2..e740bbf07 100644 --- a/tests/validation/ExtendedValidationUsingJavaTest/zonedbx2018g/zone_infos.h +++ b/tests/validation/ExtendedValidationUsingJavaTest/zonedbx2018g/zone_infos.h @@ -638,14 +638,9 @@ extern const extended::ZoneInfo& kZoneZulu; // Zulu -> Etc/UTC //--------------------------------------------------------------------------- -// Inaccurate zones: 5 +// Inaccurate zones: 0 //--------------------------------------------------------------------------- -// America/Goose_Bay (AT time '0:01' of RULE 'StJohns' truncated to '00:00') -// America/Moncton (AT time '0:01' of RULE 'Moncton' truncated to '00:00') -// America/St_Johns (AT time '0:01' of RULE 'StJohns' truncated to '00:00') -// Asia/Gaza (UNTIL time '0:01' truncated to '00:00', AT time '0:01' of RULE 'Palestine' truncated to '00:00') -// Asia/Hebron (AT time '0:01' of RULE 'Palestine' truncated to '00:00') //--------------------------------------------------------------------------- diff --git a/tests/validation/ExtendedValidationUsingJavaTest/zonedbx2018g/zone_policies.cpp b/tests/validation/ExtendedValidationUsingJavaTest/zonedbx2018g/zone_policies.cpp index 42ae09e99..9a41fef88 100644 --- a/tests/validation/ExtendedValidationUsingJavaTest/zonedbx2018g/zone_policies.cpp +++ b/tests/validation/ExtendedValidationUsingJavaTest/zonedbx2018g/zone_policies.cpp @@ -4298,7 +4298,7 @@ static const extended::ZoneRule kZoneRulesMoncton[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W + 1 /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -4310,7 +4310,7 @@ static const extended::ZoneRule kZoneRulesMoncton[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W + 1 /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -5367,7 +5367,7 @@ static const extended::ZoneRule kZoneRulesPalestine[] ACE_TIME_PROGMEM = { 0 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W + 1 /*atTimeModifier*/, 4 /*deltaCode*/, 'S' /*letter*/, }, @@ -5987,7 +5987,7 @@ static const extended::ZoneRule kZoneRulesStJohns[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 0 /*onDayOfMonth*/, 0 /*atTimeCode*/, - extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W + 1 /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, @@ -5999,7 +5999,7 @@ static const extended::ZoneRule kZoneRulesStJohns[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W + 1 /*atTimeModifier*/, 8 /*deltaCode*/, 0 /*letter; "DD"*/, }, @@ -6011,7 +6011,7 @@ static const extended::ZoneRule kZoneRulesStJohns[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W + 1 /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -6023,7 +6023,7 @@ static const extended::ZoneRule kZoneRulesStJohns[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 8 /*onDayOfMonth*/, 0 /*atTimeCode*/, - extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W + 1 /*atTimeModifier*/, 4 /*deltaCode*/, 'D' /*letter*/, }, @@ -6035,7 +6035,7 @@ static const extended::ZoneRule kZoneRulesStJohns[] ACE_TIME_PROGMEM = { 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, 0 /*atTimeCode*/, - extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, + extended::ZoneContext::TIME_MODIFIER_W + 1 /*atTimeModifier*/, 0 /*deltaCode*/, 'S' /*letter*/, }, diff --git a/tests/validation/ExtendedValidationUsingJavaTest/zonedbx2018g/zone_policies.h b/tests/validation/ExtendedValidationUsingJavaTest/zonedbx2018g/zone_policies.h index 1c8b88cc2..d67d0495c 100644 --- a/tests/validation/ExtendedValidationUsingJavaTest/zonedbx2018g/zone_policies.h +++ b/tests/validation/ExtendedValidationUsingJavaTest/zonedbx2018g/zone_policies.h @@ -166,11 +166,8 @@ extern const extended::ZonePolicy kPolicyZion; // kPolicyW-Eur (unused) -// Inaccurate zone policies: 3 +// Inaccurate zone policies: 0 // -// kPolicyMoncton (AT time '0:01' truncated to '00:00') -// kPolicyPalestine (AT time '0:01' truncated to '00:00') -// kPolicyStJohns (AT time '0:01' truncated to '00:00') } From 86798b8b01a3eecf470e3ebba3df182f560111ee Mon Sep 17 00:00:00 2001 From: Brian Park Date: Fri, 9 Aug 2019 20:37:14 -0700 Subject: [PATCH 15/55] src/internal: Document the upper and lower 4-bits of atTimeModifier and untilTimeModifier fields --- src/ace_time/internal/ZoneInfo.inc | 11 ++++++++++- src/ace_time/internal/ZonePolicy.inc | 10 +++++++--- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/ace_time/internal/ZoneInfo.inc b/src/ace_time/internal/ZoneInfo.inc index 0f16f01d2..639b71476 100644 --- a/src/ace_time/internal/ZoneInfo.inc +++ b/src/ace_time/internal/ZoneInfo.inc @@ -65,7 +65,16 @@ struct ZoneEra { */ uint8_t const untilTimeCode; - /** UNTIL time modifier suffix: 'w', 's' or 'u'. */ + /** + * The untilTimeModifier is a packed field containing 2 pieces of info: + * + * * The upper 4 bits represent the UNTIL time suffix: 'w', 's' or 'u', + * represented by TIME_MODIFIER_W, TIME_MODIFIER_S and TIME_MODIFIER_U. + * * The lower 4 bits represent the remaining 0-14 minutes of the UNTIL + * field after truncation into untilTimeCode. In other words, the full + * UNTIL field in one-minute resolution is (15 * untilTimeCode + + * (untilTimeModifier & 0x0f)). + */ uint8_t const untilTimeModifier; }; diff --git a/src/ace_time/internal/ZonePolicy.inc b/src/ace_time/internal/ZonePolicy.inc index b93ba361b..80a49bd72 100644 --- a/src/ace_time/internal/ZonePolicy.inc +++ b/src/ace_time/internal/ZonePolicy.inc @@ -49,9 +49,13 @@ struct ZoneRule { uint8_t const atTimeCode; /** - * Determined by the suffix in the AT column: 'w'=wall; 's'=standard; - * 'u'=meridian ('g' and 'z' mean the same as 'u' and are not supported - * because no current TZ file uses them). + * The atTimeModifier is a packed field containing 2 pieces of info: + * + * * The upper 4 bits represent the AT time suffix: 'w', 's' or 'u', + * represented by TIME_MODIFIER_W, TIME_MODIFIER_S and TIME_MODIFIER_U. + * * The lower 4 bits represent the remaining 0-14 minutes of the AT field + * after truncation into atTimeCode. In other words, the full AT field in + * one-minute resolution is (15 * atTimeCode + (atTimeModifier & 0x0f)). */ uint8_t const atTimeModifier; From c0ff1470fd5a5ee9ed1ce06c7c23a1d90f247fd5 Mon Sep 17 00:00:00 2001 From: Brian Park Date: Fri, 9 Aug 2019 22:24:16 -0700 Subject: [PATCH 16/55] src/ExtendedZoneProcessor: Rearrange order of 'modifier' and 'minutes' for better packing on 32-bit processors on 4-byte boundaries --- src/ace_time/ExtendedZoneProcessor.h | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/ace_time/ExtendedZoneProcessor.h b/src/ace_time/ExtendedZoneProcessor.h index b999448bb..c2f14c934 100644 --- a/src/ace_time/ExtendedZoneProcessor.h +++ b/src/ace_time/ExtendedZoneProcessor.h @@ -57,14 +57,21 @@ class ZoneProcessorCacheImpl; namespace extended { -// NOTE: Consider compressing 'modifier' into 'month' field -/** A tuple that represents a date and time. */ +/** + * A tuple that represents a date and time. Packed to 4-byte boundaries to + * save space on 32-bit processors. + */ struct DateTuple { + DateTuple() = default; + + DateTuple(int8_t y, uint8_t mon, uint8_t d, int16_t min, uint8_t mod): + yearTiny(y), month(mon), day(d), modifier(mod), minutes(min) {} + int8_t yearTiny; // [-127, 126], 127 will cause bugs uint8_t month; // [1-12] uint8_t day; // [1-31] - int16_t minutes; // negative values allowed uint8_t modifier; // TIME_MODIFIER_S, TIME_MODIFIER_W, TIME_MODIFIER_U + int16_t minutes; // negative values allowed /** Used only for debugging. */ void log() const { From 916e1c56ea1bf6cd269acad0d7cf39627db31f72 Mon Sep 17 00:00:00 2001 From: Brian Park Date: Fri, 9 Aug 2019 22:31:23 -0700 Subject: [PATCH 17/55] examples/AutoBenchmark: Update sizeof() and timing numbers for highres TimeOffset and zoneinfo --- examples/AutoBenchmark/README.md | 158 +++++++++++++++---------------- 1 file changed, 79 insertions(+), 79 deletions(-) diff --git a/examples/AutoBenchmark/README.md b/examples/AutoBenchmark/README.md index 943c77815..2331b539c 100644 --- a/examples/AutoBenchmark/README.md +++ b/examples/AutoBenchmark/README.md @@ -21,17 +21,17 @@ Memory: sizeof(LocalDate): 3 sizeof(LocalTime): 3 sizeof(LocalDateTime): 6 -sizeof(TimeOffset): 1 -sizeof(OffsetDateTime): 7 +sizeof(TimeOffset): 2 +sizeof(OffsetDateTime): 8 sizeof(BasicZoneProcessor): 99 -sizeof(ExtendedZoneProcessor): 397 +sizeof(ExtendedZoneProcessor): 437 sizeof(BasicZoneRegistrar): 5 sizeof(ExtendedZoneRegistrar): 5 sizeof(BasicZoneManager<1>): 107 -sizeof(ExtendedZoneManager<1>): 405 +sizeof(ExtendedZoneManager<1>): 445 sizeof(TimeZoneData): 5 sizeof(TimeZone): 5 -sizeof(ZonedDateTime): 12 +sizeof(ZonedDateTime): 13 sizeof(TimePeriod): 4 sizeof(clock::DS3231Clock): 3 sizeof(clock::SystemClock): 17 @@ -43,8 +43,8 @@ sizeof(basic::ZoneInfo): 12 sizeof(basic::ZoneRule): 9 sizeof(basic::ZonePolicy): 6 sizeof(basic::Transition): 18 -sizeof(extended::Transition): 40 -sizeof(extended::ZoneMatch): 12 +sizeof(extended::Transition): 44 +sizeof(extended::ZoneMatch): 14 ``` CPU: @@ -55,18 +55,18 @@ CPU: |--------------------------------------------------|----------| | Empty loop | 5.200 | |--------------------------------------------------|----------| -| LocalDate::forEpochDays() | 216.800 | +| LocalDate::forEpochDays() | 216.400 | | LocalDate::toEpochDays() | 57.200 | | LocalDate::dayOfWeek() | 50.400 | | OffsetDateTime::forEpochSeconds() | 320.800 | | OffsetDateTime::toEpochSeconds() | 86.400 | | ZonedDateTime::toEpochSeconds() | 87.600 | -| ZonedDateTime::toEpochDays() | 73.200 | -| ZonedDateTime::forEpochSeconds(UTC) | 334.000 | -| ZonedDateTime::forEpochSeconds(Basic nocache) | 1139.200 | -| ZonedDateTime::forEpochSeconds(Basic cached) | 618.000 | -| ZonedDateTime::forEpochSeconds(Extended nocache) | 1962.000 | -| ZonedDateTime::forEpochSeconds(Extended cached) | 615.600 | +| ZonedDateTime::toEpochDays() | 73.600 | +| ZonedDateTime::forEpochSeconds(UTC) | 334.800 | +| ZonedDateTime::forEpochSeconds(Basic nocache) | 1174.800 | +| ZonedDateTime::forEpochSeconds(Basic cached) | 620.000 | +| ZonedDateTime::forEpochSeconds(Extended nocache) | 2039.200 | +| ZonedDateTime::forEpochSeconds(Extended cached) | 617.600 | +--------------------------------------------------+----------+ Number of iterations per run: 2500 ``` @@ -80,14 +80,14 @@ Memory: sizeof(LocalDate): 3 sizeof(LocalTime): 3 sizeof(LocalDateTime): 6 -sizeof(TimeOffset): 1 -sizeof(OffsetDateTime): 7 +sizeof(TimeOffset): 2 +sizeof(OffsetDateTime): 8 sizeof(BasicZoneProcessor): 136 -sizeof(ExtendedZoneProcessor): 468 +sizeof(ExtendedZoneProcessor): 500 sizeof(BasicZoneRegistrar): 12 sizeof(ExtendedZoneRegistrar): 12 sizeof(BasicZoneManager<1>): 156 -sizeof(ExtendedZoneManager<1>): 488 +sizeof(ExtendedZoneManager<1>): 520 sizeof(TimeZoneData): 8 sizeof(TimeZone): 12 sizeof(ZonedDateTime): 20 @@ -102,7 +102,7 @@ sizeof(basic::ZoneInfo): 20 sizeof(basic::ZoneRule): 9 sizeof(basic::ZonePolicy): 12 sizeof(basic::Transition): 24 -sizeof(extended::Transition): 44 +sizeof(extended::Transition): 48 sizeof(extended::ZoneMatch): 16 ``` @@ -111,20 +111,20 @@ CPU: +--------------------------------------------------+----------+ | Method | micros | |--------------------------------------------------|----------| -| Empty loop | 1.700 | +| Empty loop | 1.400 | |--------------------------------------------------|----------| -| LocalDate::forEpochDays() | 14.600 | -| LocalDate::toEpochDays() | 7.500 | -| LocalDate::dayOfWeek() | 7.300 | -| OffsetDateTime::forEpochSeconds() | 21.400 | -| OffsetDateTime::toEpochSeconds() | 14.000 | -| ZonedDateTime::toEpochSeconds() | 14.000 | -| ZonedDateTime::toEpochDays() | 12.200 | -| ZonedDateTime::forEpochSeconds(UTC) | 24.300 | -| ZonedDateTime::forEpochSeconds(Basic nocache) | 172.100 | -| ZonedDateTime::forEpochSeconds(Basic cached) | 49.800 | -| ZonedDateTime::forEpochSeconds(Extended nocache) | 332.500 | -| ZonedDateTime::forEpochSeconds(Extended cached) | 50.300 | +| LocalDate::forEpochDays() | 23.200 | +| LocalDate::toEpochDays() | 9.600 | +| LocalDate::dayOfWeek() | 12.600 | +| OffsetDateTime::forEpochSeconds() | 34.900 | +| OffsetDateTime::toEpochSeconds() | 17.200 | +| ZonedDateTime::toEpochSeconds() | 18.500 | +| ZonedDateTime::toEpochDays() | 16.400 | +| ZonedDateTime::forEpochSeconds(UTC) | 41.200 | +| ZonedDateTime::forEpochSeconds(Basic nocache) | 226.100 | +| ZonedDateTime::forEpochSeconds(Basic cached) | 73.500 | +| ZonedDateTime::forEpochSeconds(Extended nocache) | 437.400 | +| ZonedDateTime::forEpochSeconds(Extended cached) | 74.300 | +--------------------------------------------------+----------+ Number of iterations per run: 10000 ``` @@ -139,14 +139,14 @@ Memory: sizeof(LocalDate): 3 sizeof(LocalTime): 3 sizeof(LocalDateTime): 6 -sizeof(TimeOffset): 1 -sizeof(OffsetDateTime): 7 +sizeof(TimeOffset): 2 +sizeof(OffsetDateTime): 8 sizeof(BasicZoneProcessor): 136 -sizeof(ExtendedZoneProcessor): 468 +sizeof(ExtendedZoneProcessor): 500 sizeof(BasicZoneRegistrar): 12 sizeof(ExtendedZoneRegistrar): 12 sizeof(BasicZoneManager<1>): 156 -sizeof(ExtendedZoneManager<1>): 488 +sizeof(ExtendedZoneManager<1>): 520 sizeof(TimeZoneData): 8 sizeof(TimeZone): 12 sizeof(ZonedDateTime): 20 @@ -162,7 +162,7 @@ sizeof(basic::ZoneInfo): 20 sizeof(basic::ZoneRule): 9 sizeof(basic::ZonePolicy): 12 sizeof(basic::Transition): 24 -sizeof(extended::Transition): 44 +sizeof(extended::Transition): 48 sizeof(extended::ZoneMatch): 16 ``` @@ -174,18 +174,18 @@ CPU: |--------------------------------------------------|----------| | Empty loop | 5.100 | |--------------------------------------------------|----------| -| LocalDate::forEpochDays() | 7.600 | -| LocalDate::toEpochDays() | 4.200 | +| LocalDate::forEpochDays() | 7.800 | +| LocalDate::toEpochDays() | 4.000 | | LocalDate::dayOfWeek() | 4.100 | -| OffsetDateTime::forEpochSeconds() | 12.500 | -| OffsetDateTime::toEpochSeconds() | 7.000 | -| ZonedDateTime::toEpochSeconds() | 7.100 | -| ZonedDateTime::toEpochDays() | 6.000 | -| ZonedDateTime::forEpochSeconds(UTC) | 13.500 | -| ZonedDateTime::forEpochSeconds(Basic nocache) | 93.500 | -| ZonedDateTime::forEpochSeconds(Basic cached) | 27.600 | -| ZonedDateTime::forEpochSeconds(Extended nocache) | 178.200 | -| ZonedDateTime::forEpochSeconds(Extended cached) | 27.300 | +| OffsetDateTime::forEpochSeconds() | 12.100 | +| OffsetDateTime::toEpochSeconds() | 7.100 | +| ZonedDateTime::toEpochSeconds() | 7.000 | +| ZonedDateTime::toEpochDays() | 6.100 | +| ZonedDateTime::forEpochSeconds(UTC) | 13.200 | +| ZonedDateTime::forEpochSeconds(Basic nocache) | 95.000 | +| ZonedDateTime::forEpochSeconds(Basic cached) | 26.900 | +| ZonedDateTime::forEpochSeconds(Extended nocache) | 174.800 | +| ZonedDateTime::forEpochSeconds(Extended cached) | 27.100 | +--------------------------------------------------+----------+ Number of iterations per run: 10000 ``` @@ -200,14 +200,14 @@ Memory: sizeof(LocalDate): 3 sizeof(LocalTime): 3 sizeof(LocalDateTime): 6 -sizeof(TimeOffset): 1 -sizeof(OffsetDateTime): 7 +sizeof(TimeOffset): 2 +sizeof(OffsetDateTime): 8 sizeof(BasicZoneProcessor): 136 -sizeof(ExtendedZoneProcessor): 468 +sizeof(ExtendedZoneProcessor): 500 sizeof(BasicZoneRegistrar): 12 sizeof(ExtendedZoneRegistrar): 12 sizeof(BasicZoneManager<1>): 156 -sizeof(ExtendedZoneManager<1>): 488 +sizeof(ExtendedZoneManager<1>): 520 sizeof(TimeZoneData): 8 sizeof(TimeZone): 12 sizeof(ZonedDateTime): 20 @@ -223,7 +223,7 @@ sizeof(basic::ZoneInfo): 20 sizeof(basic::ZoneRule): 9 sizeof(basic::ZonePolicy): 12 sizeof(basic::Transition): 24 -sizeof(extended::Transition): 44 +sizeof(extended::Transition): 48 sizeof(extended::ZoneMatch): 16 ``` @@ -235,18 +235,18 @@ CPU: |--------------------------------------------------|----------| | Empty loop | 1.400 | |--------------------------------------------------|----------| -| LocalDate::forEpochDays() | 0.470 | +| LocalDate::forEpochDays() | 0.460 | | LocalDate::toEpochDays() | 0.390 | | LocalDate::dayOfWeek() | 0.410 | -| OffsetDateTime::forEpochSeconds() | 1.020 | -| OffsetDateTime::toEpochSeconds() | 1.400 | +| OffsetDateTime::forEpochSeconds() | 0.940 | +| OffsetDateTime::toEpochSeconds() | 1.410 | | ZonedDateTime::toEpochSeconds() | 1.410 | | ZonedDateTime::toEpochDays() | 1.070 | -| ZonedDateTime::forEpochSeconds(UTC) | 1.550 | -| ZonedDateTime::forEpochSeconds(Basic nocache) | 14.940 | -| ZonedDateTime::forEpochSeconds(Basic cached) | 2.820 | -| ZonedDateTime::forEpochSeconds(Extended nocache) | 30.990 | -| ZonedDateTime::forEpochSeconds(Extended cached) | 2.760 | +| ZonedDateTime::forEpochSeconds(UTC) | 1.220 | +| ZonedDateTime::forEpochSeconds(Basic nocache) | 14.730 | +| ZonedDateTime::forEpochSeconds(Basic cached) | 2.520 | +| ZonedDateTime::forEpochSeconds(Extended nocache) | 29.710 | +| ZonedDateTime::forEpochSeconds(Extended cached) | 2.450 | +--------------------------------------------------+----------+ Number of iterations per run: 100000 ``` @@ -265,29 +265,29 @@ Memory: sizeof(LocalDate): 3 sizeof(LocalTime): 3 sizeof(LocalDateTime): 6 -sizeof(TimeOffset): 1 -sizeof(OffsetDateTime): 7 +sizeof(TimeOffset): 2 +sizeof(OffsetDateTime): 8 sizeof(BasicZoneProcessor): 136 -sizeof(ExtendedZoneProcessor): 468 +sizeof(ExtendedZoneProcessor): 500 sizeof(BasicZoneRegistrar): 12 sizeof(ExtendedZoneRegistrar): 12 sizeof(BasicZoneManager<1>): 156 -sizeof(ExtendedZoneManager<1>): 488 +sizeof(ExtendedZoneManager<1>): 520 sizeof(TimeZoneData): 8 sizeof(TimeZone): 12 sizeof(ZonedDateTime): 20 sizeof(TimePeriod): 4 -sizeof(clock::SystemClock): 24 sizeof(clock::DS3231Clock): 8 -sizeof(clock::SystemClockLoop): 16 -sizeof(clock::SystemClockCoroutine): 48 +sizeof(clock::SystemClock): 24 +sizeof(clock::SystemClockLoop): 44 +sizeof(clock::SystemClockCoroutine): 68 sizeof(basic::ZoneContext): 8 sizeof(basic::ZoneEra): 16 sizeof(basic::ZoneInfo): 20 sizeof(basic::ZoneRule): 9 sizeof(basic::ZonePolicy): 12 sizeof(basic::Transition): 24 -sizeof(extended::Transition): 44 +sizeof(extended::Transition): 48 sizeof(extended::ZoneMatch): 16 ``` CPU: @@ -295,20 +295,20 @@ CPU: +--------------------------------------------------+----------+ | Method | micros | |--------------------------------------------------|----------| -| Empty loop | 0.580 | +| Empty loop | 0.570 | |--------------------------------------------------|----------| -| LocalDate::forEpochDays() | 1.390 | -| LocalDate::toEpochDays() | 0.720 | -| LocalDate::dayOfWeek() | 1.340 | -| OffsetDateTime::forEpochSeconds() | 1.970 | +| LocalDate::forEpochDays() | 1.140 | +| LocalDate::toEpochDays() | 0.910 | +| LocalDate::dayOfWeek() | 1.700 | +| OffsetDateTime::forEpochSeconds() | 1.880 | | OffsetDateTime::toEpochSeconds() | 0.450 | -| ZonedDateTime::toEpochSeconds() | 0.590 | -| ZonedDateTime::toEpochDays() | 0.210 | +| ZonedDateTime::toEpochSeconds() | 0.410 | +| ZonedDateTime::toEpochDays() | 0.260 | | ZonedDateTime::forEpochSeconds(UTC) | 2.270 | -| ZonedDateTime::forEpochSeconds(Basic nocache) | 29.200 | +| ZonedDateTime::forEpochSeconds(Basic nocache) | 28.800 | | ZonedDateTime::forEpochSeconds(Basic cached) | 6.060 | -| ZonedDateTime::forEpochSeconds(Extended nocache) | 65.930 | -| ZonedDateTime::forEpochSeconds(Extended cached) | 6.160 | +| ZonedDateTime::forEpochSeconds(Extended nocache) | 66.900 | +| ZonedDateTime::forEpochSeconds(Extended cached) | 6.030 | +--------------------------------------------------+----------+ Number of iterations per run: 100000 ``` From 9ac8615f0f0ad9ad902044926081b5eb432f109a Mon Sep 17 00:00:00 2001 From: Brian Park Date: Fri, 9 Aug 2019 22:51:25 -0700 Subject: [PATCH 18/55] examples/MemoryBenchmark: Update flash memory numbers for highres TimeOffset and zoneinfo files --- examples/MemoryBenchmark/README.md | 128 +++++++++++++-------------- examples/MemoryBenchmark/esp32.txt | 20 ++--- examples/MemoryBenchmark/esp8266.txt | 16 ++-- examples/MemoryBenchmark/micro.txt | 20 ++--- examples/MemoryBenchmark/nano.txt | 20 ++--- examples/MemoryBenchmark/samd.txt | 18 ++-- examples/MemoryBenchmark/teensy.txt | 18 ++-- 7 files changed, 120 insertions(+), 120 deletions(-) diff --git a/examples/MemoryBenchmark/README.md b/examples/MemoryBenchmark/README.md index 371102937..db2c861fd 100644 --- a/examples/MemoryBenchmark/README.md +++ b/examples/MemoryBenchmark/README.md @@ -14,7 +14,7 @@ Teensyduino does not seem to allow headless operation.) ## Arduino Nano -* AceTime 0.6 +* AceTime 0.7 * Arduino IDE 1.8.9 * Arduino AVR Boards 1.6.23 @@ -25,24 +25,24 @@ Teensyduino does not seem to allow headless operation.) | Baseline | 448/ 10 | 0/ 0 | |---------------------------------+--------------+-------------| | LocalDateTime | 1452/ 147 | 1004/ 137 | -| ZonedDateTime | 2282/ 147 | 1834/ 137 | -| Basic TimeZone | 6860/ 211 | 6412/ 201 | -| Basic TimeZone (2 zones) | 7378/ 217 | 6930/ 207 | -| Basic ZoneManager (1 zone) | 6996/ 219 | 6548/ 209 | -| Basic ZoneManager (all) | 22062/ 607 | 21614/ 597 | -| Extended TimeZone | 9232/ 211 | 8784/ 201 | -| Extended TimeZone (2 zones) | 9702/ 217 | 9254/ 207 | -| Extended ZoneManager (1 zone) | 9510/ 219 | 9062/ 209 | -| Extended ZoneManager (all) | 34114/ 709 | 33666/ 699 | +| ZonedDateTime | 2294/ 147 | 1846/ 137 | +| Basic TimeZone | 7034/ 211 | 6586/ 201 | +| Basic TimeZone (2 zones) | 7578/ 217 | 7130/ 207 | +| Basic ZoneManager (1 zone) | 7170/ 219 | 6722/ 209 | +| Basic ZoneManager (all) | 22236/ 607 | 21788/ 597 | +| Extended TimeZone | 9800/ 211 | 9352/ 201 | +| Extended TimeZone (2 zones) | 10296/ 217 | 9848/ 207 | +| Extended ZoneManager (1 zone) | 10108/ 219 | 9660/ 209 | +| Extended ZoneManager (all) | 34712/ 709 | 34264/ 699 | |---------------------------------+--------------+-------------| | SystemClock | 4860/ 276 | 4412/ 266 | -| SystemClock+Basic TimeZone | 9280/ 366 | 8832/ 356 | +| SystemClock+Basic TimeZone | 9480/ 366 | 9032/ 356 | +--------------------------------------------------------------+ ``` ## Sparkfun Pro Micro -* AceTime 0.6 +* AceTime 0.7 * Arduino IDE 1.8.9 * SparkFun AVR Boards 1.1.12 @@ -53,24 +53,24 @@ Teensyduino does not seem to allow headless operation.) | Baseline | 3622/ 150 | 0/ 0 | |---------------------------------+--------------+-------------| | LocalDateTime | 4452/ 287 | 830/ 137 | -| ZonedDateTime | 5282/ 287 | 1660/ 137 | -| Basic TimeZone | 9860/ 351 | 6238/ 201 | -| Basic TimeZone (2 zones) | 10376/ 355 | 6754/ 205 | -| Basic ZoneManager (1 zone) | 9996/ 359 | 6374/ 209 | -| Basic ZoneManager (all) | 25060/ 745 | 21438/ 595 | -| Extended TimeZone | 12232/ 351 | 8610/ 201 | -| Extended TimeZone (2 zones) | 12700/ 355 | 9078/ 205 | -| Extended ZoneManager (1 zone) | 12510/ 359 | 8888/ 209 | -| Extended ZoneManager (all) | 37112/ 847 | 33490/ 697 | +| ZonedDateTime | 5294/ 287 | 1672/ 137 | +| Basic TimeZone | 10034/ 351 | 6412/ 201 | +| Basic TimeZone (2 zones) | 10576/ 355 | 6954/ 205 | +| Basic ZoneManager (1 zone) | 10170/ 359 | 6548/ 209 | +| Basic ZoneManager (all) | 25234/ 745 | 21612/ 595 | +| Extended TimeZone | 12800/ 351 | 9178/ 201 | +| Extended TimeZone (2 zones) | 13294/ 355 | 9672/ 205 | +| Extended ZoneManager (1 zone) | 13108/ 359 | 9486/ 209 | +| Extended ZoneManager (all) | 37710/ 847 | 34088/ 697 | |---------------------------------+--------------+-------------| | SystemClock | 7860/ 416 | 4238/ 266 | -| SystemClock+Basic TimeZone | 12280/ 506 | 8658/ 356 | +| SystemClock+Basic TimeZone | 12480/ 506 | 8858/ 356 | +--------------------------------------------------------------+ ``` ## SAMD21 M0 Mini -* AceTime 0.6 +* AceTime 0.7 * Arduino IDE 1.8.9 * SparkFun SAMD Boards 1.6.2 @@ -82,17 +82,17 @@ Teensyduino does not seem to allow headless operation.) |---------------------------------+--------------+-------------| | LocalDateTime | 11788/ 0 | 864/ 0 | | ZonedDateTime | 11944/ 0 | 1020/ 0 | -| Basic TimeZone | 15924/ 0 | 5000/ 0 | -| Basic TimeZone (2 zones) | 16316/ 0 | 5392/ 0 | -| Basic ZoneManager (1 zone) | 16052/ 0 | 5128/ 0 | -| Basic ZoneManager (all) | 35224/ 0 | 24300/ 0 | -| Extended TimeZone | 17764/ 0 | 6840/ 0 | -| Extended TimeZone (2 zones) | 18184/ 0 | 7260/ 0 | -| Extended ZoneManager (1 zone) | 17904/ 0 | 6980/ 0 | -| Extended ZoneManager (all) | 49732/ 0 | 38808/ 0 | +| Basic TimeZone | 16028/ 0 | 5104/ 0 | +| Basic TimeZone (2 zones) | 16420/ 0 | 5496/ 0 | +| Basic ZoneManager (1 zone) | 16164/ 0 | 5240/ 0 | +| Basic ZoneManager (all) | 35336/ 0 | 24412/ 0 | +| Extended TimeZone | 17956/ 0 | 7032/ 0 | +| Extended TimeZone (2 zones) | 18360/ 0 | 7436/ 0 | +| Extended ZoneManager (1 zone) | 18096/ 0 | 7172/ 0 | +| Extended ZoneManager (all) | 49924/ 0 | 39000/ 0 | |---------------------------------+--------------+-------------| | SystemClock | 14116/ 0 | 3192/ 0 | -| SystemClock+Basic TimeZone | 17496/ 0 | 6572/ 0 | +| SystemClock+Basic TimeZone | 17608/ 0 | 6684/ 0 | +--------------------------------------------------------------+ ``` @@ -100,7 +100,7 @@ Teensyduino does not seem to allow headless operation.) ## ESP8266 -* AceTime 0.6 +* AceTime 0.7 * Arduino IDE 1.8.9 * ESP8266 Boards 2.5.2 @@ -111,24 +111,24 @@ Teensyduino does not seem to allow headless operation.) | Baseline | 257104/26540 | 0/ 0 | |---------------------------------+--------------+-------------| | LocalDateTime | 259480/26884 | 2376/ 344 | -| ZonedDateTime | 260184/26884 | 3080/ 344 | -| Basic TimeZone | 265412/27312 | 8308/ 772 | -| Basic TimeZone (2 zones) | 265700/27312 | 8596/ 772 | +| ZonedDateTime | 260136/26884 | 3032/ 344 | +| Basic TimeZone | 265396/27312 | 8292/ 772 | +| Basic TimeZone (2 zones) | 265652/27312 | 8548/ 772 | | Basic ZoneManager (1 zone) | 265636/27312 | 8532/ 772 | | Basic ZoneManager (all) | 285316/27312 | 28212/ 772 | -| Extended TimeZone | 267352/27412 | 10248/ 872 | -| Extended TimeZone (2 zones) | 267720/27412 | 10616/ 872 | -| Extended ZoneManager (1 zone) | 267576/27412 | 10472/ 872 | -| Extended ZoneManager (all) | 300088/27412 | 42984/ 872 | +| Extended TimeZone | 267544/27412 | 10440/ 872 | +| Extended TimeZone (2 zones) | 267848/27412 | 10744/ 872 | +| Extended ZoneManager (1 zone) | 267736/27412 | 10632/ 872 | +| Extended ZoneManager (all) | 300248/27412 | 43144/ 872 | |---------------------------------+--------------+-------------| | SystemClock | 262932/26908 | 5828/ 368 | -| SystemClock+Basic TimeZone | 267812/27324 | 10708/ 784 | +| SystemClock+Basic TimeZone | 267828/27324 | 10724/ 784 | +--------------------------------------------------------------+ ``` ## ESP32 -* AceTime 0.6 +* AceTime 0.7 * Arduino IDE 1.8.9 * ESP32 Boards 1.0.2 @@ -139,18 +139,18 @@ Teensyduino does not seem to allow headless operation.) | Baseline | 193200/12680 | 0/ 0 | |---------------------------------+--------------+-------------| | LocalDateTime | 203844/14164 | 10644/ 1484 | -| ZonedDateTime | 204684/14164 | 11484/ 1484 | -| Basic TimeZone | 208568/14164 | 15368/ 1484 | -| Basic TimeZone (2 zones) | 208840/14164 | 15640/ 1484 | -| Basic ZoneManager (1 zone) | 208856/14164 | 15656/ 1484 | -| Basic ZoneManager (all) | 228440/14164 | 35240/ 1484 | -| Extended TimeZone | 210260/14164 | 17060/ 1484 | -| Extended TimeZone (2 zones) | 210576/14164 | 17376/ 1484 | -| Extended ZoneManager (1 zone) | 210516/14164 | 17316/ 1484 | -| Extended ZoneManager (all) | 242956/14164 | 49756/ 1484 | +| ZonedDateTime | 204648/14164 | 11448/ 1484 | +| Basic TimeZone | 208436/14164 | 15236/ 1484 | +| Basic TimeZone (2 zones) | 208704/14164 | 15504/ 1484 | +| Basic ZoneManager (1 zone) | 208744/14164 | 15544/ 1484 | +| Basic ZoneManager (all) | 228332/14164 | 35132/ 1484 | +| Extended TimeZone | 210332/14164 | 17132/ 1484 | +| Extended TimeZone (2 zones) | 210616/14164 | 17416/ 1484 | +| Extended ZoneManager (1 zone) | 210588/14164 | 17388/ 1484 | +| Extended ZoneManager (all) | 243028/14164 | 49828/ 1484 | |---------------------------------+--------------+-------------| | SystemClock | 211588/14268 | 18388/ 1588 | -| SystemClock+Basic TimeZone | 215408/14268 | 22208/ 1588 | +| SystemClock+Basic TimeZone | 215312/14268 | 22112/ 1588 | +--------------------------------------------------------------+ ``` @@ -160,7 +160,7 @@ usage by objects. ## Teensy 3.2 -* AceTime 0.6 +* AceTime 0.7 * Arduino IDE 1.8.9 * Teensyduino 1.46 @@ -172,16 +172,16 @@ usage by objects. |---------------------------------+--------------+-------------| | LocalDateTime | 14492/ 5204 | 5644/ 1768 | | ZonedDateTime | 14492/ 5204 | 5644/ 1768 | -| Basic TimeZone | 22024/ 5204 | 13176/ 1768 | -| Basic TimeZone (2 zones) | 22760/ 5204 | 13912/ 1768 | -| Basic ZoneManager (1 zone) | 22236/ 5204 | 13388/ 1768 | -| Basic ZoneManager (all) | 41948/ 5204 | 33100/ 1768 | -| Extended TimeZone | 25360/ 5204 | 16512/ 1768 | -| Extended TimeZone (2 zones) | 26096/ 5204 | 17248/ 1768 | -| Extended ZoneManager (1 zone) | 25572/ 5204 | 16724/ 1768 | -| Extended ZoneManager (all) | 58140/ 5204 | 49292/ 1768 | -|---------------------------------+--------------+-------------| -| SystemClock | 17368/ 5204 | 8520/ 1768 | -| SystemClock+Basic TimeZone | 25068/ 5204 | 16220/ 1768 | +| Basic TimeZone | 22216/ 5204 | 13368/ 1768 | +| Basic TimeZone (2 zones) | 22952/ 5204 | 14104/ 1768 | +| Basic ZoneManager (1 zone) | 22492/ 5204 | 13644/ 1768 | +| Basic ZoneManager (all) | 42140/ 5204 | 33292/ 1768 | +| Extended TimeZone | 25552/ 5204 | 16704/ 1768 | +| Extended TimeZone (2 zones) | 26224/ 5204 | 17376/ 1768 | +| Extended ZoneManager (1 zone) | 25764/ 5204 | 16916/ 1768 | +| Extended ZoneManager (all) | 58332/ 5204 | 49484/ 1768 | +|---------------------------------+--------------+-------------| +| SystemClock | 17380/ 5204 | 8532/ 1768 | +| SystemClock+Basic TimeZone | 25260/ 5204 | 16412/ 1768 | +--------------------------------------------------------------+ ``` diff --git a/examples/MemoryBenchmark/esp32.txt b/examples/MemoryBenchmark/esp32.txt index 43236e6ad..683133bc1 100644 --- a/examples/MemoryBenchmark/esp32.txt +++ b/examples/MemoryBenchmark/esp32.txt @@ -1,13 +1,13 @@ 0 193200 1310720 12680 327680 1 203844 1310720 14164 327680 -2 204684 1310720 14164 327680 -3 208568 1310720 14164 327680 -4 208840 1310720 14164 327680 -5 208856 1310720 14164 327680 -6 228440 1310720 14164 327680 -7 210260 1310720 14164 327680 -8 210576 1310720 14164 327680 -9 210516 1310720 14164 327680 -10 242956 1310720 14164 327680 +2 204648 1310720 14164 327680 +3 208436 1310720 14164 327680 +4 208704 1310720 14164 327680 +5 208744 1310720 14164 327680 +6 228332 1310720 14164 327680 +7 210332 1310720 14164 327680 +8 210616 1310720 14164 327680 +9 210588 1310720 14164 327680 +10 243028 1310720 14164 327680 11 211588 1310720 14268 327680 -12 215408 1310720 14268 327680 +12 215312 1310720 14268 327680 diff --git a/examples/MemoryBenchmark/esp8266.txt b/examples/MemoryBenchmark/esp8266.txt index f52a85595..c9080bf62 100644 --- a/examples/MemoryBenchmark/esp8266.txt +++ b/examples/MemoryBenchmark/esp8266.txt @@ -1,13 +1,13 @@ 0 257104 1044464 26540 81920 1 259480 1044464 26884 81920 -2 260184 1044464 26884 81920 -3 265412 1044464 27312 81920 -4 265700 1044464 27312 81920 +2 260136 1044464 26884 81920 +3 265396 1044464 27312 81920 +4 265652 1044464 27312 81920 5 265636 1044464 27312 81920 6 285316 1044464 27312 81920 -7 267352 1044464 27412 81920 -8 267720 1044464 27412 81920 -9 267576 1044464 27412 81920 -10 300088 1044464 27412 81920 +7 267544 1044464 27412 81920 +8 267848 1044464 27412 81920 +9 267736 1044464 27412 81920 +10 300248 1044464 27412 81920 11 262932 1044464 26908 81920 -12 267812 1044464 27324 81920 +12 267828 1044464 27324 81920 diff --git a/examples/MemoryBenchmark/micro.txt b/examples/MemoryBenchmark/micro.txt index f89c4c718..882e10c31 100644 --- a/examples/MemoryBenchmark/micro.txt +++ b/examples/MemoryBenchmark/micro.txt @@ -1,13 +1,13 @@ 0 3622 28672 150 2560 1 4452 28672 287 2560 -2 5282 28672 287 2560 -3 9860 28672 351 2560 -4 10376 28672 355 2560 -5 9996 28672 359 2560 -6 25060 28672 745 2560 -7 12232 28672 351 2560 -8 12700 28672 355 2560 -9 12510 28672 359 2560 -10 37112 28672 847 2560 +2 5294 28672 287 2560 +3 10034 28672 351 2560 +4 10576 28672 355 2560 +5 10170 28672 359 2560 +6 25234 28672 745 2560 +7 12800 28672 351 2560 +8 13294 28672 355 2560 +9 13108 28672 359 2560 +10 37710 28672 847 2560 11 7860 28672 416 2560 -12 12280 28672 506 2560 +12 12480 28672 506 2560 diff --git a/examples/MemoryBenchmark/nano.txt b/examples/MemoryBenchmark/nano.txt index b85584c01..1e3a113fe 100644 --- a/examples/MemoryBenchmark/nano.txt +++ b/examples/MemoryBenchmark/nano.txt @@ -1,13 +1,13 @@ 0 448 30720 10 2048 1 1452 30720 147 2048 -2 2282 30720 147 2048 -3 6860 30720 211 2048 -4 7378 30720 217 2048 -5 6996 30720 219 2048 -6 22062 30720 607 2048 -7 9232 30720 211 2048 -8 9702 30720 217 2048 -9 9510 30720 219 2048 -10 34114 30720 709 2048 +2 2294 30720 147 2048 +3 7034 30720 211 2048 +4 7578 30720 217 2048 +5 7170 30720 219 2048 +6 22236 30720 607 2048 +7 9800 30720 211 2048 +8 10296 30720 217 2048 +9 10108 30720 219 2048 +10 34712 30720 709 2048 11 4860 30720 276 2048 -12 9280 30720 366 2048 +12 9480 30720 366 2048 diff --git a/examples/MemoryBenchmark/samd.txt b/examples/MemoryBenchmark/samd.txt index 9c9c77617..f569a772c 100644 --- a/examples/MemoryBenchmark/samd.txt +++ b/examples/MemoryBenchmark/samd.txt @@ -1,13 +1,13 @@ 0 10924 262144 1 11788 262144 2 11944 262144 -3 15924 262144 -4 16316 262144 -5 16052 262144 -6 35224 262144 -7 17764 262144 -8 18184 262144 -9 17904 262144 -10 49732 262144 +3 16028 262144 +4 16420 262144 +5 16164 262144 +6 35336 262144 +7 17956 262144 +8 18360 262144 +9 18096 262144 +10 49924 262144 11 14116 262144 -12 17496 262144 +12 17608 262144 diff --git a/examples/MemoryBenchmark/teensy.txt b/examples/MemoryBenchmark/teensy.txt index 8145c18bc..b98e2207d 100644 --- a/examples/MemoryBenchmark/teensy.txt +++ b/examples/MemoryBenchmark/teensy.txt @@ -1,13 +1,13 @@ 0 8848 262144 3436 62100 1 14492 262144 5204 60332 2 14492 262144 5204 60332 -3 22024 262144 5204 60332 -4 22760 262144 5204 60332 -5 22236 262144 5204 60332 -6 41948 262144 5204 60332 -7 25360 262144 5204 65536 -8 26096 262144 5204 60332 -9 25572 262144 5204 60332 -10 58140 262144 5204 60332 +3 22216 262144 5204 60332 +4 22952 262144 5204 60332 +5 22492 262144 5204 60332 +6 42140 262144 5204 60332 +7 25552 262144 5204 65536 +8 26224 262144 5204 60332 +9 25764 262144 5204 60332 +10 58332 262144 5204 60332 11 17380 262144 5204 60332 -12 25068 262144 5204 60332 +12 25260 262144 5204 60332 From a909784b2edd5bc7eb941c3965d89637e1358fe3 Mon Sep 17 00:00:00 2001 From: Brian Park Date: Fri, 9 Aug 2019 23:25:07 -0700 Subject: [PATCH 19/55] src: Rename TimeOffset::forHour() to forHours() to be consistent with forMinutes() --- USER_GUIDE.md | 24 ++++++++--------- examples/CommandLineClock/Controller.h | 4 +-- examples/WorldClock/WorldClock.ino | 6 ++--- src/ace_time/TimeOffset.h | 7 +++-- .../BasicZoneProcessorTest.ino | 16 ++++++------ .../ExtendedZoneProcessorMoreTest.ino | 18 ++++++------- .../ExtendedZoneProcessorTest.ino | 6 ++--- .../OffsetDateTimeTest/OffsetDateTimeTest.ino | 16 ++++++------ tests/TimeOffsetTest/TimeOffsetTest.ino | 14 +++++----- .../TimeZoneExtendedTest.ino | 8 +++--- tests/TimeZoneTest/TimeZoneTest.ino | 26 +++++++++---------- .../ZonedDateTimeBasicTest.ino | 22 ++++++++++------ .../ZonedDateTimeExtendedTest.ino | 17 ++++++------ tests/ZonedDateTimeTest/ZonedDateTimeTest.ino | 19 +++++++------- 14 files changed, 105 insertions(+), 98 deletions(-) diff --git a/USER_GUIDE.md b/USER_GUIDE.md index b93431210..4d0fe2600 100644 --- a/USER_GUIDE.md +++ b/USER_GUIDE.md @@ -578,7 +578,7 @@ namespace ace_time { class TimeOffset { public: - static TimeOffset forHour(int8_t hour); + static TimeOffset forHours(int8_t hour); static TimeOffset forHourMinute(int8_t hour, int8_t minute); static TimeOffset forMinutes(int16_t minutes); @@ -597,7 +597,7 @@ class TimeOffset { A `TimeOffset` can be created using the factory methods: ```C++ -auto offset = TimeOffset::forHour(-8); // -08:00 +auto offset = TimeOffset::forHours(-8); // -08:00 auto offset = TimeOffset::forHourMinute(-2, -30); // -02:30 auto offset = TimeOffset::forMinutes(135); // +02:15 ``` @@ -862,11 +862,11 @@ To create `TimeZone` instances with other offsets, use the `forTimeOffset()` factory method: ```C++ -auto tz = TimeZone::forTimeOffset(TimeOffset::forHour(-8)); // UTC-08:00 +auto tz = TimeZone::forTimeOffset(TimeOffset::forHours(-8)); // UTC-08:00 auto tz = TimeZone::forTimeOffset(TimeOffset::forHourMinute(-4, -30)); // UTC-04:30 auto tz = TimeZone::forTimeOffset( - TimeOffset::forHour(-8), - TimeOffset::forHour(1)); // UTC-08:00+01:00 (effectively -07:00) + TimeOffset::forHours(-8), + TimeOffset::forHours(1)); // UTC-08:00+01:00 (effectively -07:00) ``` The `TimeZone::isUtc()`, `TimeZone::isDst()` and `TimeZone::setDst(bool)` @@ -938,7 +938,7 @@ void someFunction() { // 2018-03-11T01:59:59-08:00 was still in STD time { auto dt = OffsetDateTime::forComponents(2018, 3, 11, 1, 59, 59, - TimeOffset::forHour(-8)); + TimeOffset::forHours(-8)); acetime_t epochSeconds = dt.toEpochSeconds(); auto offset = tz.getUtcOffset(epochSeconds); // returns -08:00 } @@ -946,7 +946,7 @@ void someFunction() { // one second later, 2018-03-11T02:00:00-08:00 was in DST time { auto dt = OffsetDateTime::forComponents(2018, 3, 11, 2, 0, 0, - TimeOffset::forHour(-8)); + TimeOffset::forHours(-8)); acetime_t epochSeconds = dt.toEpochSeconds(); auto offset = tz.getUtcOffset(epochSeconds); // returns -07:00 } @@ -1000,7 +1000,7 @@ void someFunction() { // 2018-03-11T01:59:59-08:00 was still in STD time { auto dt = OffsetDateTime::forComponents(2018, 3, 11, 1, 59, 59, - TimeOffset::forHour(-8)); + TimeOffset::forHours(-8)); acetime_t epochSeconds = dt.toEpochSeconds(); auto offset = tz.getUtcOffset(epochSeconds); // returns -08:00 } @@ -1008,7 +1008,7 @@ void someFunction() { // one second later, 2018-03-11T02:00:00-08:00 was in DST time { auto dt = OffsetDateTime::forComponents(2018, 3, 11, 2, 0, 0, - TimeOffset::forHour(-8)); + TimeOffset::forHours(-8)); acetime_t epochSeconds = dt.toEpochSeconds(); auto offset = tz.getUtcOffset(epochSeconds); // returns -07:00 } @@ -1903,7 +1903,7 @@ void loop() { acetime_t nowSeconds = ntpClock.getNow(); // convert epochSeconds to UTC-08:00 OffsetDateTime odt = OffsetDateTime::forEpochSeconds( - nowSeconds, TimeOffset::forHour(-8)); + nowSeconds, TimeOffset::forHours(-8)); odt.printTo(Serial); delay(10000); // wait 10 seconds } @@ -1971,7 +1971,7 @@ void loop() { acetime_t nowSeconds = dsClock.getNow(); // convert epochSeconds to UTC-08:00 OffsetDateTime odt = OffsetDateTime::forEpochSeconds( - nowSeconds, TimeOffset::forHour(-8)); + nowSeconds, TimeOffset::forHours(-8)); odt.printTo(Serial); delay(10000); // wait 10 seconds } @@ -2238,7 +2238,7 @@ void loop() { acetime_t now = systemClock.getNow(); if (now - prevNow >= 10) { auto odt = OffsetDateTime::forEpochSeconds( - now, TimeOffset::forHour(-8)); // convert epochSeconds to UTC-08:00 + now, TimeOffset::forHours(-8)); // convert epochSeconds to UTC-08:00 odt.printTo(Serial); } } diff --git a/examples/CommandLineClock/Controller.h b/examples/CommandLineClock/Controller.h index 8c377e0ff..989e27da7 100644 --- a/examples/CommandLineClock/Controller.h +++ b/examples/CommandLineClock/Controller.h @@ -47,7 +47,7 @@ class Controller { /** Set the DST setting of Manual TimeZone. */ void setDst(bool isDst) { - mTimeZone.setDstOffset(TimeOffset::forHour(isDst ? 1 : 0)); + mTimeZone.setDstOffset(TimeOffset::forHours(isDst ? 1 : 0)); preserveInfo(); } @@ -195,7 +195,7 @@ class Controller { #elif ENABLE_TIME_ZONE_TYPE_EXTENDED setExtendedTimeZoneForId(storedInfo.zoneId); #else - setManualTimeZone(TimeOffset::forHour(-8), TimeOffset()); + setManualTimeZone(TimeOffset::forHours(-8), TimeOffset()); #endif break; case TimeZone::kTypeManual: diff --git a/examples/WorldClock/WorldClock.ino b/examples/WorldClock/WorldClock.ino index 54a3b1b10..1d5d573bd 100644 --- a/examples/WorldClock/WorldClock.ino +++ b/examples/WorldClock/WorldClock.ino @@ -84,9 +84,9 @@ Presenter presenter0(oled0); Presenter presenter1(oled1); Presenter presenter2(oled2); #if TIME_ZONE_TYPE == TIME_ZONE_TYPE_MANUAL -TimeZone tz0 = TimeZone::forTimeOffset(TimeOffset::forHour(-8)); -TimeZone tz1 = TimeZone::forTimeOffset(TimeOffset::forHour(-5)); -TimeZone tz2 = TimeZone::forTimeOffset(TimeOffset::forHour(0)); +TimeZone tz0 = TimeZone::forTimeOffset(TimeOffset::forHours(-8)); +TimeZone tz1 = TimeZone::forTimeOffset(TimeOffset::forHours(-5)); +TimeZone tz2 = TimeZone::forTimeOffset(TimeOffset::forHours(0)); #elif TIME_ZONE_TYPE == TIME_ZONE_TYPE_BASIC BasicZoneProcessor zoneProcessor0; BasicZoneProcessor zoneProcessor1; diff --git a/src/ace_time/TimeOffset.h b/src/ace_time/TimeOffset.h index d89243dfa..841d41a8e 100644 --- a/src/ace_time/TimeOffset.h +++ b/src/ace_time/TimeOffset.h @@ -31,7 +31,7 @@ void increment15Minutes(TimeOffset& offset); * of -08:00: * * @code - * TimeOffset tz = TimeOffset::forHour(-8); + * TimeOffset tz = TimeOffset::forHours(-8); * TimeOffset tz = TimeOffset::forHourMinute(-8, 0); * TimeOffset tz = TimeOffset::forMinutes(-480); * TimeOffset tz = TimeOffset::forOffsetString("-08:00"); @@ -66,12 +66,11 @@ class TimeOffset { /** Sentinel value that represents an error. */ static const int16_t kErrorMinutes = INT16_MIN; - // TODO: Change this to forHours() for consistency with forMinutes()? /** * Create TimeOffset with the corresponding hour offset. For example, - * -08:00 is 'forHour(-8)'. + * -08:00 is 'forHours(-8)'. */ - static TimeOffset forHour(int8_t hour) { + static TimeOffset forHours(int8_t hour) { return TimeOffset::forMinutes(hour * 60); } diff --git a/tests/BasicZoneProcessorTest/BasicZoneProcessorTest.ino b/tests/BasicZoneProcessorTest/BasicZoneProcessorTest.ino index 7803ccd67..57c1d4742 100644 --- a/tests/BasicZoneProcessorTest/BasicZoneProcessorTest.ino +++ b/tests/BasicZoneProcessorTest/BasicZoneProcessorTest.ino @@ -213,35 +213,35 @@ test(BasicZoneProcessorTest, kZoneAmerica_Los_Angeles) { acetime_t epochSeconds; dt = OffsetDateTime::forComponents(2018, 3, 11, 1, 59, 59, - TimeOffset::forHour(-8)); + TimeOffset::forHours(-8)); epochSeconds = dt.toEpochSeconds(); assertEqual(-8*60, zoneProcessor.getUtcOffset(epochSeconds).toMinutes()); assertEqual("PST", zoneProcessor.getAbbrev(epochSeconds)); assertTrue(zoneProcessor.getDeltaOffset(epochSeconds).isZero()); dt = OffsetDateTime::forComponents(2018, 3, 11, 2, 0, 0, - TimeOffset::forHour(-8)); + TimeOffset::forHours(-8)); epochSeconds = dt.toEpochSeconds(); assertEqual(-7*60, zoneProcessor.getUtcOffset(epochSeconds).toMinutes()); assertEqual("PDT", zoneProcessor.getAbbrev(epochSeconds)); assertFalse(zoneProcessor.getDeltaOffset(epochSeconds).isZero()); dt = OffsetDateTime::forComponents(2018, 11, 4, 1, 0, 0, - TimeOffset::forHour(-7)); + TimeOffset::forHours(-7)); epochSeconds = dt.toEpochSeconds(); assertEqual(-7*60, zoneProcessor.getUtcOffset(epochSeconds).toMinutes()); assertEqual("PDT", zoneProcessor.getAbbrev(epochSeconds)); assertFalse(zoneProcessor.getDeltaOffset(epochSeconds).isZero()); dt = OffsetDateTime::forComponents(2018, 11, 4, 1, 59, 59, - TimeOffset::forHour(-7)); + TimeOffset::forHours(-7)); epochSeconds = dt.toEpochSeconds(); assertEqual(-7*60, zoneProcessor.getUtcOffset(epochSeconds).toMinutes()); assertEqual("PDT", zoneProcessor.getAbbrev(epochSeconds)); assertFalse(zoneProcessor.getDeltaOffset(epochSeconds).isZero()); dt = OffsetDateTime::forComponents(2018, 11, 4, 2, 0, 0, - TimeOffset::forHour(-7)); + TimeOffset::forHours(-7)); epochSeconds = dt.toEpochSeconds(); assertEqual(-8*60, zoneProcessor.getUtcOffset(epochSeconds).toMinutes()); assertEqual("PST", zoneProcessor.getAbbrev(epochSeconds)); @@ -256,7 +256,7 @@ test(BasicZoneProcessorTest, kZoneAfrica_Johannesburg) { acetime_t epochSeconds; dt = OffsetDateTime::forComponents(2018, 1, 1, 0, 0, 0, - TimeOffset::forHour(2)); + TimeOffset::forHours(2)); epochSeconds = dt.toEpochSeconds(); assertEqual(2*60, zoneProcessor.getUtcOffset(epochSeconds).toMinutes()); assertEqual("SAST", zoneProcessor.getAbbrev(epochSeconds)); @@ -288,14 +288,14 @@ test(BasicZoneProcessorTest, kZoneAmerica_Los_Angeles_outOfBounds) { assertEqual(2050, zonedb::kZoneAmerica_Los_Angeles.zoneContext->untilYear); dt = OffsetDateTime::forComponents(1998, 3, 11, 1, 59, 59, - TimeOffset::forHour(-8)); + TimeOffset::forHours(-8)); epochSeconds = dt.toEpochSeconds(); assertTrue(zoneProcessor.getUtcOffset(epochSeconds).isError()); assertTrue(zoneProcessor.getDeltaOffset(epochSeconds).isError()); assertEqual("", zoneProcessor.getAbbrev(epochSeconds)); dt = OffsetDateTime::forComponents(2051, 2, 1, 1, 0, 0, - TimeOffset::forHour(-8)); + TimeOffset::forHours(-8)); epochSeconds = dt.toEpochSeconds(); assertTrue(zoneProcessor.getUtcOffset(epochSeconds).isError()); assertTrue(zoneProcessor.getDeltaOffset(epochSeconds).isError()); diff --git a/tests/ExtendedZoneProcessorMoreTest/ExtendedZoneProcessorMoreTest.ino b/tests/ExtendedZoneProcessorMoreTest/ExtendedZoneProcessorMoreTest.ino index c7fd07414..aa7368f7d 100644 --- a/tests/ExtendedZoneProcessorMoreTest/ExtendedZoneProcessorMoreTest.ino +++ b/tests/ExtendedZoneProcessorMoreTest/ExtendedZoneProcessorMoreTest.ino @@ -21,35 +21,35 @@ test(ExtendedZoneProcessorTest, kZoneAmerica_Los_Angeles) { acetime_t epochSeconds; dt = OffsetDateTime::forComponents(2018, 3, 11, 1, 59, 59, - TimeOffset::forHour(-8)); + TimeOffset::forHours(-8)); epochSeconds = dt.toEpochSeconds(); assertEqual(-8*60, zoneProcessor.getUtcOffset(epochSeconds).toMinutes()); assertEqual("PST", zoneProcessor.getAbbrev(epochSeconds)); assertTrue(zoneProcessor.getDeltaOffset(epochSeconds).isZero()); dt = OffsetDateTime::forComponents(2018, 3, 11, 2, 0, 0, - TimeOffset::forHour(-8)); + TimeOffset::forHours(-8)); epochSeconds = dt.toEpochSeconds(); assertEqual(-7*60, zoneProcessor.getUtcOffset(epochSeconds).toMinutes()); assertEqual("PDT", zoneProcessor.getAbbrev(epochSeconds)); assertFalse(zoneProcessor.getDeltaOffset(epochSeconds).isZero()); dt = OffsetDateTime::forComponents(2018, 11, 4, 1, 0, 0, - TimeOffset::forHour(-7)); + TimeOffset::forHours(-7)); epochSeconds = dt.toEpochSeconds(); assertEqual(-7*60, zoneProcessor.getUtcOffset(epochSeconds).toMinutes()); assertEqual("PDT", zoneProcessor.getAbbrev(epochSeconds)); assertFalse(zoneProcessor.getDeltaOffset(epochSeconds).isZero()); dt = OffsetDateTime::forComponents(2018, 11, 4, 1, 59, 59, - TimeOffset::forHour(-7)); + TimeOffset::forHours(-7)); epochSeconds = dt.toEpochSeconds(); assertEqual(-7*60, zoneProcessor.getUtcOffset(epochSeconds).toMinutes()); assertEqual("PDT", zoneProcessor.getAbbrev(epochSeconds)); assertFalse(zoneProcessor.getDeltaOffset(epochSeconds).isZero()); dt = OffsetDateTime::forComponents(2018, 11, 4, 2, 0, 0, - TimeOffset::forHour(-7)); + TimeOffset::forHours(-7)); epochSeconds = dt.toEpochSeconds(); assertEqual(-8*60, zoneProcessor.getUtcOffset(epochSeconds).toMinutes()); assertEqual("PST", zoneProcessor.getAbbrev(epochSeconds)); @@ -65,14 +65,14 @@ test(ExtendedZoneProcessorTest, kZoneAmerica_Los_Angeles_outOfBounds) { assertEqual(2050, zonedbx::kZoneAmerica_Los_Angeles.zoneContext->untilYear); dt = OffsetDateTime::forComponents(1998, 3, 11, 1, 59, 59, - TimeOffset::forHour(-8)); + TimeOffset::forHours(-8)); epochSeconds = dt.toEpochSeconds(); assertTrue(zoneProcessor.getUtcOffset(epochSeconds).isError()); assertTrue(zoneProcessor.getDeltaOffset(epochSeconds).isError()); assertEqual("", zoneProcessor.getAbbrev(epochSeconds)); dt = OffsetDateTime::forComponents(2051, 2, 1, 1, 0, 0, - TimeOffset::forHour(-8)); + TimeOffset::forHours(-8)); epochSeconds = dt.toEpochSeconds(); assertTrue(zoneProcessor.getUtcOffset(epochSeconds).isError()); assertTrue(zoneProcessor.getDeltaOffset(epochSeconds).isError()); @@ -83,9 +83,9 @@ test(ExtendedZoneProcessorTest, kZoneAmerica_Los_Angeles_outOfBounds) { void setup() { #if defined(ARDUINO) - delay(1000); // wait for stability on some boards to prevent garbage SERIAL_PORT_MONITOR + delay(1000); // wait for stability to prevent garbage on SERIAL_PORT_MONITOR #endif - SERIAL_PORT_MONITOR.begin(115200); // ESP8266 default of 74880 not supported on Linux + SERIAL_PORT_MONITOR.begin(115200); while(!SERIAL_PORT_MONITOR); // for the Arduino Leonardo/Micro only } diff --git a/tests/ExtendedZoneProcessorTest/ExtendedZoneProcessorTest.ino b/tests/ExtendedZoneProcessorTest/ExtendedZoneProcessorTest.ino index 2cccde50f..6a2fe0a61 100644 --- a/tests/ExtendedZoneProcessorTest/ExtendedZoneProcessorTest.ino +++ b/tests/ExtendedZoneProcessorTest/ExtendedZoneProcessorTest.ino @@ -710,7 +710,7 @@ test(ExtendedZoneProcessorTest, fixTransitionTimes_generateStartUntilTimes) { assertTrue((transition1->untilDateTime == DateTuple{19, 3, 10, 15*8, ZoneContext::TIME_MODIFIER_W})); acetime_t epochSecs = OffsetDateTime::forComponents( - 2018, 12, 1, 0, 0, 0, TimeOffset::forHour(-8)).toEpochSeconds(); + 2018, 12, 1, 0, 0, 0, TimeOffset::forHours(-8)).toEpochSeconds(); assertEqual(epochSecs, transition1->startEpochSeconds); // Second transition startTime is shifted forward one hour into PDT. @@ -721,7 +721,7 @@ test(ExtendedZoneProcessorTest, fixTransitionTimes_generateStartUntilTimes) { assertTrue((transition2->untilDateTime == DateTuple{19, 11, 3, 15*8, ZoneContext::TIME_MODIFIER_W})); epochSecs = OffsetDateTime::forComponents( - 2019, 3, 10, 3, 0, 0, TimeOffset::forHour(-7)).toEpochSeconds(); + 2019, 3, 10, 3, 0, 0, TimeOffset::forHours(-7)).toEpochSeconds(); assertEqual(epochSecs, transition2->startEpochSeconds); // Third transition startTime is shifted back one hour into PST. @@ -732,7 +732,7 @@ test(ExtendedZoneProcessorTest, fixTransitionTimes_generateStartUntilTimes) { assertTrue((transition3->untilDateTime == DateTuple{20, 2, 1, 0, ZoneContext::TIME_MODIFIER_W})); epochSecs = OffsetDateTime::forComponents( - 2019, 11, 3, 1, 0, 0, TimeOffset::forHour(-8)).toEpochSeconds(); + 2019, 11, 3, 1, 0, 0, TimeOffset::forHours(-8)).toEpochSeconds(); assertEqual(epochSecs, transition3->startEpochSeconds); } diff --git a/tests/OffsetDateTimeTest/OffsetDateTimeTest.ino b/tests/OffsetDateTimeTest/OffsetDateTimeTest.ino index 6543bea66..85406d490 100644 --- a/tests/OffsetDateTimeTest/OffsetDateTimeTest.ino +++ b/tests/OffsetDateTimeTest/OffsetDateTimeTest.ino @@ -185,10 +185,10 @@ test(OffsetDateTimeTest, toAndForUnixSeconds) { // 2018-08-30T06:45:01-07:00 dt = OffsetDateTime::forComponents(2018, 8, 30, 6, 45, 1, - TimeOffset::forHour(-7)); + TimeOffset::forHours(-7)); assertEqual((acetime_t) 1535636701, dt.toUnixSeconds()); udt = OffsetDateTime::forUnixSeconds(dt.toUnixSeconds(), - TimeOffset::forHour(-7)); + TimeOffset::forHours(-7)); assertTrue(dt == udt); // 2038-01-19 03:14:06Z (largest value - 1 using Unix Epoch) @@ -214,7 +214,7 @@ test(OffsetDateTimeTest, forEpochSeconds) { assertEqual(LocalDate::kMonday, dt.dayOfWeek()); // 2029-12-31 15:59:59-08:00 Monday - TimeOffset offset = TimeOffset::forHour(-8); // UTC-08:00 + TimeOffset offset = TimeOffset::forHours(-8); // UTC-08:00 dt = OffsetDateTime::forEpochSeconds(10958 * (acetime_t) 86400 - 1, offset); assertEqual((int16_t) 2029, dt.year()); assertEqual(29, dt.yearTiny()); @@ -229,7 +229,7 @@ test(OffsetDateTimeTest, forEpochSeconds) { test(OffsetDateTimeTest, convertToTimeOffset) { OffsetDateTime a = OffsetDateTime::forComponents(2018, 1, 1, 12, 0, 0, TimeOffset()); - OffsetDateTime b = a.convertToTimeOffset(TimeOffset::forHour(-7)); + OffsetDateTime b = a.convertToTimeOffset(TimeOffset::forHours(-7)); assertEqual((int16_t) 2018, b.year()); assertEqual(18, b.yearTiny()); @@ -290,10 +290,10 @@ test(OffsetDateTimeTest, compareTo) { // 2018-1-1 12:00:00+01:00 a = OffsetDateTime::forComponents(2018, 1, 1, 12, 0, 0, - TimeOffset::forHour(1)); + TimeOffset::forHours(1)); // 2018-1-1 12:00:00-08:00 b = OffsetDateTime::forComponents(2018, 1, 1, 12, 0, 0, - TimeOffset::forHour(-8)); + TimeOffset::forHours(-8)); assertLess(a.compareTo(b), 0); assertMore(b.compareTo(a), 0); assertTrue(a != b); @@ -389,9 +389,9 @@ test(OffsetDateTimeTest, forDateString_errors) { void setup() { #if defined(ARDUINO) - delay(1000); // wait for stability on some boards to prevent garbage SERIAL_PORT_MONITOR + delay(1000); // wait for stability to prevent garbage on SERIAL_PORT_MONITOR #endif - SERIAL_PORT_MONITOR.begin(115200); // ESP8266 default of 74880 not supported on Linux + SERIAL_PORT_MONITOR.begin(115200); while(!SERIAL_PORT_MONITOR); // for the Arduino Leonardo/Micro only } diff --git a/tests/TimeOffsetTest/TimeOffsetTest.ino b/tests/TimeOffsetTest/TimeOffsetTest.ino index 9372ad279..ea4511b4d 100644 --- a/tests/TimeOffsetTest/TimeOffsetTest.ino +++ b/tests/TimeOffsetTest/TimeOffsetTest.ino @@ -11,13 +11,13 @@ using namespace ace_time; // -------------------------------------------------------------------------- test(TimeOffsetTest, code) { - assertEqual(TimeOffset::forHour(-8).toOffsetCode(), -8*4); + assertEqual(TimeOffset::forHours(-8).toOffsetCode(), -8*4); } test(TimeOffsetTest, isZero) { - assertTrue(TimeOffset::forHour(0).isZero()); + assertTrue(TimeOffset::forHours(0).isZero()); assertTrue(TimeOffset().isZero()); - assertFalse(TimeOffset::forHour(1).isZero()); + assertFalse(TimeOffset::forHours(1).isZero()); } test(TimeOffsetTest, forMinutes) { @@ -39,8 +39,8 @@ test(TimeOffsetTest, forMinutes) { } test(TimeOffsetTest, forHour) { - assertEqual(TimeOffset::forHour(-8).toMinutes(), -8*60); - assertEqual(TimeOffset::forHour(1).toMinutes(), 1*60); + assertEqual(TimeOffset::forHours(-8).toMinutes(), -8*60); + assertEqual(TimeOffset::forHours(1).toMinutes(), 1*60); } test(TimeOffsetTest, forHourMinute) { @@ -138,9 +138,9 @@ test(TimeOffsetMutationTest, increment15Minutes) { void setup() { #if defined(ARDUINO) - delay(1000); // wait for stability on some boards to prevent garbage SERIAL_PORT_MONITOR + delay(1000); // wait for stability to prevent garbage on SERIAL_PORT_MONITOR #endif - SERIAL_PORT_MONITOR.begin(115200); // ESP8266 default of 74880 not supported on Linux + SERIAL_PORT_MONITOR.begin(115200); while(!SERIAL_PORT_MONITOR); // for the Arduino Leonardo/Micro only } diff --git a/tests/TimeZoneExtendedTest/TimeZoneExtendedTest.ino b/tests/TimeZoneExtendedTest/TimeZoneExtendedTest.ino index 3273ed30f..cad8929f0 100644 --- a/tests/TimeZoneExtendedTest/TimeZoneExtendedTest.ino +++ b/tests/TimeZoneExtendedTest/TimeZoneExtendedTest.ino @@ -52,7 +52,7 @@ test(TimeZoneExtendedTest, Los_Angeles) { assertEqual(TimeZone::kTypeExtendedManaged, tz.getType()); dt = OffsetDateTime::forComponents(2018, 3, 11, 1, 59, 59, - TimeOffset::forHour(-8)); + TimeOffset::forHours(-8)); epochSeconds = dt.toEpochSeconds(); assertEqual(-8*60, tz.getUtcOffset(epochSeconds).toMinutes()); assertEqual(0, tz.getDeltaOffset(epochSeconds).toMinutes()); @@ -61,7 +61,7 @@ test(TimeZoneExtendedTest, Los_Angeles) { fakePrint.flush(); dt = OffsetDateTime::forComponents(2018, 3, 11, 2, 0, 0, - TimeOffset::forHour(-8)); + TimeOffset::forHours(-8)); epochSeconds = dt.toEpochSeconds(); assertEqual(-7*60, tz.getUtcOffset(epochSeconds).toMinutes()); assertEqual(1*60, tz.getDeltaOffset(epochSeconds).toMinutes()); @@ -73,9 +73,9 @@ test(TimeZoneExtendedTest, Los_Angeles) { void setup() { #if defined(ARDUINO) - delay(1000); // wait for stability on some boards to prevent garbage SERIAL_PORT_MONITOR + delay(1000); // wait for stability to prevent garbage on SERIAL_PORT_MONITOR #endif - SERIAL_PORT_MONITOR.begin(115200); // ESP8266 default of 74880 not supported on Linux + SERIAL_PORT_MONITOR.begin(115200); while(!SERIAL_PORT_MONITOR); // for the Arduino Leonardo/Micro only } diff --git a/tests/TimeZoneTest/TimeZoneTest.ino b/tests/TimeZoneTest/TimeZoneTest.ino index 81a99588c..7e2c68521 100644 --- a/tests/TimeZoneTest/TimeZoneTest.ino +++ b/tests/TimeZoneTest/TimeZoneTest.ino @@ -112,7 +112,7 @@ test(TimeZoneTest, manual_utc) { test(TimeZoneTest, manual_no_dst) { FakePrint fakePrint; - TimeZone tz = TimeZone::forTimeOffset(TimeOffset::forHour(-8)); + TimeZone tz = TimeZone::forTimeOffset(TimeOffset::forHours(-8)); assertEqual(TimeZone::kTypeManual, tz.getType()); assertEqual(-8*60, tz.getUtcOffset(0).toMinutes()); @@ -135,8 +135,8 @@ test(TimeZoneTest, manual_no_dst) { test(TimeZoneTest, manual_dst) { FakePrint fakePrint; - TimeZone tz = TimeZone::forTimeOffset(TimeOffset::forHour(-8), - TimeOffset::forHour(1)); + TimeZone tz = TimeZone::forTimeOffset(TimeOffset::forHours(-8), + TimeOffset::forHours(1)); assertEqual(TimeZone::kTypeManual, tz.getType()); assertEqual(-7*60, tz.getUtcOffset(0).toMinutes()); @@ -186,7 +186,7 @@ test(TimeZoneBasicTest, Los_Angeles) { assertEqual(TimeZone::kTypeBasicManaged, tz.getType()); dt = OffsetDateTime::forComponents(2018, 3, 11, 1, 59, 59, - TimeOffset::forHour(-8)); + TimeOffset::forHours(-8)); epochSeconds = dt.toEpochSeconds(); assertEqual(-8*60, tz.getUtcOffset(epochSeconds).toMinutes()); assertEqual(0, tz.getDeltaOffset(epochSeconds).toMinutes()); @@ -195,7 +195,7 @@ test(TimeZoneBasicTest, Los_Angeles) { fakePrint.flush(); dt = OffsetDateTime::forComponents(2018, 3, 11, 2, 0, 0, - TimeOffset::forHour(-8)); + TimeOffset::forHours(-8)); epochSeconds = dt.toEpochSeconds(); assertEqual(-7*60, tz.getUtcOffset(epochSeconds).toMinutes()); assertEqual(1*60, tz.getDeltaOffset(epochSeconds).toMinutes()); @@ -228,8 +228,8 @@ test(TimeZoneDataTest, utc) { } test(TimeZoneDataTest, manual) { - auto tz = TimeZone::forTimeOffset(TimeOffset::forHour(-8), - TimeOffset::forHour(1)); + auto tz = TimeZone::forTimeOffset(TimeOffset::forHours(-8), + TimeOffset::forHours(1)); auto tzd = tz.toTimeZoneData(); assertEqual(TimeZone::kTypeManual, tzd.type); assertEqual(-8 * 60, tzd.stdOffsetMinutes); @@ -283,8 +283,8 @@ test(TimeZoneDataTest, crossed) { // -------------------------------------------------------------------------- test(TimeZoneExtendedTest, operatorEqualEqual_managedZones) { - TimeZone manual = TimeZone::forTimeOffset(TimeOffset::forHour(-8)); - TimeZone manual2 = TimeZone::forTimeOffset(TimeOffset::forHour(-7)); + TimeZone manual = TimeZone::forTimeOffset(TimeOffset::forHours(-8)); + TimeZone manual2 = TimeZone::forTimeOffset(TimeOffset::forHours(-7)); assertTrue(manual != manual2); TimeZone basicManaged = basicZoneManager.createForZoneInfo( @@ -315,8 +315,8 @@ BasicZoneProcessor basicZoneProcessor; ExtendedZoneProcessor extendedZoneProcessor; test(TimeZoneTest, operatorEqualEqual_directZone) { - TimeZone manual = TimeZone::forTimeOffset(TimeOffset::forHour(-8)); - TimeZone manual2 = TimeZone::forTimeOffset(TimeOffset::forHour(-7)); + TimeZone manual = TimeZone::forTimeOffset(TimeOffset::forHours(-8)); + TimeZone manual2 = TimeZone::forTimeOffset(TimeOffset::forHours(-7)); assertTrue(manual != manual2); TimeZone basic = TimeZone::forZoneInfo( @@ -340,9 +340,9 @@ test(TimeZoneTest, operatorEqualEqual_directZone) { void setup() { #if defined(ARDUINO) - delay(1000); // wait for stability on some boards to prevent garbage SERIAL_PORT_MONITOR + delay(1000); // wait for stability to prevent garbage on SERIAL_PORT_MONITOR #endif - SERIAL_PORT_MONITOR.begin(115200); // ESP8266 default of 74880 not supported on Linux + SERIAL_PORT_MONITOR.begin(115200); while(!SERIAL_PORT_MONITOR); // for the Arduino Leonardo/Micro only } diff --git a/tests/ZonedDateTimeBasicTest/ZonedDateTimeBasicTest.ino b/tests/ZonedDateTimeBasicTest/ZonedDateTimeBasicTest.ino index 34236fbcb..004f2d6c6 100644 --- a/tests/ZonedDateTimeBasicTest/ZonedDateTimeBasicTest.ino +++ b/tests/ZonedDateTimeBasicTest/ZonedDateTimeBasicTest.ino @@ -44,7 +44,8 @@ test(ZonedDateTimeBasicTest, forComponents_beforeDst) { // 01:59 should resolve to 01:59-08:00 auto dt = ZonedDateTime::forComponents(2018, 3, 11, 1, 59, 0, tz); - assertEqual(TimeOffset::forHour(-8).toMinutes(), dt.timeOffset().toMinutes()); + assertEqual(TimeOffset::forHours(-8).toMinutes(), + dt.timeOffset().toMinutes()); auto expected = LocalDateTime::forComponents(2018, 3, 11, 1, 59, 0); assertTrue(expected == dt.localDateTime()); } @@ -56,7 +57,8 @@ test(ZonedDateTimeBasicTest, forComponents_inDstGap) { // 02:01 doesn't exist, but BasicZoneProcessor picks the later epochSeconds // and offset, so should push forward the 02:01 to 03:01-07:00. auto dt = ZonedDateTime::forComponents(2018, 3, 11, 2, 1, 0, tz); - assertEqual(TimeOffset::forHour(-7).toMinutes(), dt.timeOffset().toMinutes()); + assertEqual(TimeOffset::forHours(-7).toMinutes(), + dt.timeOffset().toMinutes()); auto expected = LocalDateTime::forComponents(2018, 3, 11, 3, 1, 0); assertTrue(expected == dt.localDateTime()); } @@ -67,7 +69,8 @@ test(ZonedDateTimeBasicTest, forComponents_inDst) { // 03:01 should resolve to 03:01-07:00 auto dt = ZonedDateTime::forComponents(2018, 3, 11, 3, 1, 0, tz); - assertEqual(TimeOffset::forHour(-7).toMinutes(), dt.timeOffset().toMinutes()); + assertEqual(TimeOffset::forHours(-7).toMinutes(), + dt.timeOffset().toMinutes()); auto expected = LocalDateTime::forComponents(2018, 3, 11, 3, 1, 0); assertTrue(expected == dt.localDateTime()); } @@ -79,7 +82,8 @@ test(ZonedDateTimeBasicTest, forComponents_beforeStd) { // 00:59 is more than an hour before the DST->STD transition so should // resolve to 00:59-07:00 auto dt = ZonedDateTime::forComponents(2018, 11, 4, 0, 59, 0, tz); - assertEqual(TimeOffset::forHour(-7).toMinutes(), dt.timeOffset().toMinutes()); + assertEqual(TimeOffset::forHours(-7).toMinutes(), + dt.timeOffset().toMinutes()); auto expected = LocalDateTime::forComponents(2018, 11, 4, 0, 59, 0); assertTrue(expected == dt.localDateTime()); } @@ -91,7 +95,8 @@ test(ZonedDateTimeBasicTest, forComponents_inOverlap) { // There were two instances of 01:01. BasicZoneProcessor chooses the earlier // occurrence, giving 01:01-07:00. auto dt = ZonedDateTime::forComponents(2018, 11, 4, 1, 1, 0, tz); - assertEqual(TimeOffset::forHour(-7).toMinutes(), dt.timeOffset().toMinutes()); + assertEqual(TimeOffset::forHours(-7).toMinutes(), + dt.timeOffset().toMinutes()); auto expected = LocalDateTime::forComponents(2018, 11, 4, 1, 1, 0); assertTrue(expected == dt.localDateTime()); } @@ -102,7 +107,8 @@ test(ZonedDateTimeBasicTest, forComponents_afterOverlap) { // 02:01 should always be 02:01-08:00 auto dt = ZonedDateTime::forComponents(2018, 11, 4, 2, 1, 0, tz); - assertEqual(TimeOffset::forHour(-8).toMinutes(), dt.timeOffset().toMinutes()); + assertEqual(TimeOffset::forHours(-8).toMinutes(), + dt.timeOffset().toMinutes()); auto expected = LocalDateTime::forComponents(2018, 11, 4, 2, 1, 0); assertTrue(expected == dt.localDateTime()); } @@ -117,9 +123,9 @@ test(ZonedDateTimeBasicTest, linked_zones) { void setup() { #if defined(ARDUINO) - delay(1000); // wait for stability on some boards to prevent garbage SERIAL_PORT_MONITOR + delay(1000); // wait for stability to prevent garbage on SERIAL_PORT_MONITOR #endif - SERIAL_PORT_MONITOR.begin(115200); // ESP8266 default of 74880 not supported on Linux + SERIAL_PORT_MONITOR.begin(115200); while(!SERIAL_PORT_MONITOR); // for the Arduino Leonardo/Micro only } diff --git a/tests/ZonedDateTimeExtendedTest/ZonedDateTimeExtendedTest.ino b/tests/ZonedDateTimeExtendedTest/ZonedDateTimeExtendedTest.ino index 43a8d3d01..a0ef3118b 100644 --- a/tests/ZonedDateTimeExtendedTest/ZonedDateTimeExtendedTest.ino +++ b/tests/ZonedDateTimeExtendedTest/ZonedDateTimeExtendedTest.ino @@ -44,7 +44,7 @@ test(ZonedDateTimeExtendedTest, forComponents_beforeDst) { // 01:59 should resolve to 01:59-08:00 auto dt = ZonedDateTime::forComponents(2018, 3, 11, 1, 59, 0, tz); - assertEqual(TimeOffset::forHour(-8).toMinutes(), dt.timeOffset().toMinutes()); + assertEqual(TimeOffset::forHours(-8).toMinutes(), dt.timeOffset().toMinutes()); auto expected = LocalDateTime::forComponents(2018, 3, 11, 1, 59, 0); assertTrue(expected == dt.localDateTime()); } @@ -57,7 +57,7 @@ test(ZonedDateTimeExtendedTest, forComponents_inDstGap) { // timeOffset, i.e. the most recent matching Transition, so this is // interpreted as 02:01-08:00 which gets normalized to 03:01-07:00. auto dt = ZonedDateTime::forComponents(2018, 3, 11, 2, 1, 0, tz); - assertEqual(TimeOffset::forHour(-7).toMinutes(), dt.timeOffset().toMinutes()); + assertEqual(TimeOffset::forHours(-7).toMinutes(), dt.timeOffset().toMinutes()); auto expected = LocalDateTime::forComponents(2018, 3, 11, 3, 1, 0); assertTrue(expected == dt.localDateTime()); } @@ -68,7 +68,7 @@ test(ZonedDateTimeExtendedTest, forComponents_inDst) { // 03:01 should resolve to 03:01-07:00. auto dt = ZonedDateTime::forComponents(2018, 3, 11, 3, 1, 0, tz); - assertEqual(TimeOffset::forHour(-7).toMinutes(), dt.timeOffset().toMinutes()); + assertEqual(TimeOffset::forHours(-7).toMinutes(), dt.timeOffset().toMinutes()); dt.printTo(Serial); Serial.println(); auto expected = LocalDateTime::forComponents(2018, 3, 11, 3, 1, 0); assertTrue(expected == dt.localDateTime()); @@ -81,7 +81,7 @@ test(ZonedDateTimeExtendedTest, forComponents_beforeStd) { // 00:59 is an hour before the DST->STD transition, so should return // 00:59-07:00. auto dt = ZonedDateTime::forComponents(2018, 11, 4, 0, 59, 0, tz); - assertEqual(TimeOffset::forHour(-7).toMinutes(), dt.timeOffset().toMinutes()); + assertEqual(TimeOffset::forHours(-7).toMinutes(), dt.timeOffset().toMinutes()); auto expected = LocalDateTime::forComponents(2018, 11, 4, 0, 59, 0); assertTrue(expected == dt.localDateTime()); } @@ -93,7 +93,7 @@ test(ZonedDateTimeExtendedTest, forComponents_inOverlap) { // There were two instances of 01:01. The algorithm picks the later offset, // i.e. the most recent matching Transition, so should resolve to 01:01-08:00. auto dt = ZonedDateTime::forComponents(2018, 11, 4, 1, 1, 0, tz); - assertEqual(TimeOffset::forHour(-8).toMinutes(), dt.timeOffset().toMinutes()); + assertEqual(TimeOffset::forHours(-8).toMinutes(), dt.timeOffset().toMinutes()); auto expected = LocalDateTime::forComponents(2018, 11, 4, 1, 1, 0); assertTrue(expected == dt.localDateTime()); } @@ -104,7 +104,8 @@ test(ZonedDateTimeExtendedTest, forComponents_afterOverlap) { // 02:01 should resolve to 02:01-08:00 auto dt = ZonedDateTime::forComponents(2018, 11, 4, 2, 1, 0, tz); - assertEqual(TimeOffset::forHour(-8).toMinutes(), dt.timeOffset().toMinutes()); + assertEqual(TimeOffset::forHours(-8).toMinutes(), + dt.timeOffset().toMinutes()); auto expected = LocalDateTime::forComponents(2018, 11, 4, 2, 1, 0); assertTrue(expected == dt.localDateTime()); } @@ -119,9 +120,9 @@ test(ZonedDateTimeExtendedTest, linked_zones) { void setup() { #if defined(ARDUINO) - delay(1000); // wait for stability on some boards to prevent garbage SERIAL_PORT_MONITOR + delay(1000); // wait for stability to prevent garbage on SERIAL_PORT_MONITOR #endif - SERIAL_PORT_MONITOR.begin(115200); // ESP8266 default of 74880 not supported on Linux + SERIAL_PORT_MONITOR.begin(115200); while(!SERIAL_PORT_MONITOR); // for the Arduino Leonardo/Micro only TestRunner::exclude("*"); diff --git a/tests/ZonedDateTimeTest/ZonedDateTimeTest.ino b/tests/ZonedDateTimeTest/ZonedDateTimeTest.ino index 87e6373ca..5d15855f5 100644 --- a/tests/ZonedDateTimeTest/ZonedDateTimeTest.ino +++ b/tests/ZonedDateTimeTest/ZonedDateTimeTest.ino @@ -13,11 +13,11 @@ using namespace ace_time; // Check that ZonedDateTime with Manual TimeZone agrees with simpler // OffsetDateTime. test(ZonedDateTimeTest_Manual, agreesWithOffsetDateTime) { - TimeZone tz = TimeZone::forTimeOffset(TimeOffset::forHour(-8)); + TimeZone tz = TimeZone::forTimeOffset(TimeOffset::forHours(-8)); ZonedDateTime dt = ZonedDateTime::forComponents(2018, 3, 11, 1, 59, 59, tz); OffsetDateTime otz = OffsetDateTime::forComponents(2018, 3, 11, 1, 59, 59, - TimeOffset::forHour(-8)); + TimeOffset::forHours(-8)); assertEqual(otz.toEpochSeconds(), dt.toEpochSeconds()); } @@ -115,7 +115,7 @@ test(ZonedDateTimeTest_Manual, toAndForUnixSeconds) { assertTrue(dt == udt); // 2018-08-30T06:45:01-07:00 - TimeZone tz = TimeZone::forTimeOffset(TimeOffset::forHour(-7)); + TimeZone tz = TimeZone::forTimeOffset(TimeOffset::forHours(-7)); dt = ZonedDateTime::forComponents(2018, 8, 30, 6, 45, 1, tz); assertEqual((acetime_t) 1535636701, dt.toUnixSeconds()); udt = ZonedDateTime::forUnixSeconds(dt.toUnixSeconds(), tz); @@ -129,13 +129,13 @@ test(ZonedDateTimeTest_Manual, toAndForUnixSeconds) { } test(ZonedDateTimeTest_Manual, convertToTimeZone) { - TimeZone stdTz = TimeZone::forTimeOffset(TimeOffset::forHour(-8)); + TimeZone stdTz = TimeZone::forTimeOffset(TimeOffset::forHours(-8)); ZonedDateTime std = ZonedDateTime::forComponents( 2018, 3, 11, 1, 59, 59, stdTz); acetime_t stdEpochSeconds = std.toEpochSeconds(); TimeZone dstTz = stdTz; - dstTz.setDstOffset(TimeOffset::forHour(1)); + dstTz.setDstOffset(TimeOffset::forHours(1)); ZonedDateTime dst = std.convertToTimeZone(dstTz); acetime_t dstEpochSeconds = dst.toEpochSeconds(); @@ -151,7 +151,7 @@ test(ZonedDateTimeTest_Manual, convertToTimeZone) { } test(ZonedDateTimeTest_Manual, error) { - TimeZone stdTz = TimeZone::forTimeOffset(TimeOffset::forHour(-8)); + TimeZone stdTz = TimeZone::forTimeOffset(TimeOffset::forHours(-8)); ZonedDateTime zdt = ZonedDateTime::forEpochSeconds( LocalTime::kInvalidSeconds, stdTz); @@ -224,7 +224,8 @@ test(ZonedDateTimeTest, forDateString_errors) { // -------------------------------------------------------------------------- test(DateTimeMutationTest, increment) { - ZonedDateTime dt = ZonedDateTime::forComponents(2001, 2, 3, 4, 5, 6, TimeZone()); + ZonedDateTime dt = ZonedDateTime::forComponents(2001, 2, 3, 4, 5, 6, + TimeZone()); assertEqual((int16_t) 2001, dt.year()); assertEqual(2, dt.month()); assertEqual(3, dt.day()); @@ -283,9 +284,9 @@ test(DateTimeMutationTest, increment) { void setup() { #if defined(ARDUINO) - delay(1000); // wait for stability on some boards to prevent garbage SERIAL_PORT_MONITOR + delay(1000); // wait for stability to prevent garbage on SERIAL_PORT_MONITOR #endif - SERIAL_PORT_MONITOR.begin(115200); // ESP8266 default of 74880 not supported on Linux + SERIAL_PORT_MONITOR.begin(115200); while(!SERIAL_PORT_MONITOR); // for the Arduino Leonardo/Micro only } From e7d60f0d885117bc0d0449c7144664d5abc301be Mon Sep 17 00:00:00 2001 From: Brian Park Date: Fri, 9 Aug 2019 23:43:47 -0700 Subject: [PATCH 20/55] CHANGELOG.md: Add changes to support 1-minute resolution of AT and UNTIL fields in zoneinfo files --- CHANGELOG.md | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6db5e87c9..cf0708f8a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,8 +4,20 @@ * Change TimeZoneData to store mStdOffset and mDstOffset in units of one minute (instead of 15-minute increments, "code") in the off chance that the library supports timezones with one-minute shifts in the future. - I am treating this as "non-breaking" change because TimeZoneData is - handled as basically an opaque object by all downstream apps currently. + * Implement TimeOffset using 2 bytes (`int16_t`) instead of one byte + (`int8_t`) to give it a resolution of one minute instead of 15 minutes. + * Generate zoneinfo files with the AT and UNTIL timestamps retaining the + full one-minute resolution (instead of truncating to 15-minute boundary). + The lower 4-bits of the `modifier` field hold the 0-14 minute component, + while the upper 4-bits of the `modifier` field hold the 'w', 's' and 'u' + suffixes. Timezones whose DST transitions occur at 00:01 + (America/Goose_Bay, America/Moncton, America/St_Johns, Asia/Gaza, + Asia/Hebron) no longer truncate to 00:00. ZoneInfo files (`zonedb/` and + `zonedbx/`) remain identical in size. Flash memory consumption + usually increases by 130 to 500 bytes, but sometimes decreases by 50-100 + bytes. + * Rename `TimeOffset::forHour()` to `forHours()` for consistency with + `forMinutes()`. * 0.6.1 * Create a second Jenkins continuous build pipeline file `tests/JenskinfileUnitHost` to use UnitHostDuino to run the unit tests From 317536b12dd437c3fc1edfbce4da20430ac44e2a Mon Sep 17 00:00:00 2001 From: Brian Park Date: Fri, 9 Aug 2019 23:50:46 -0700 Subject: [PATCH 21/55] src/internal: Add doxygen docs for timeCodeToMinutes() and toModifier() helpers --- src/ace_time/internal/Brokers.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/ace_time/internal/Brokers.h b/src/ace_time/internal/Brokers.h index 1dea2a49f..e5c846c75 100644 --- a/src/ace_time/internal/Brokers.h +++ b/src/ace_time/internal/Brokers.h @@ -44,11 +44,15 @@ namespace ace_time { namespace internal { -/** Convert (timeCode, timeModifer) from zoneinfo to minutes. */ +/** Convert (timeCode, timeModifier) fields in zoneinfo to minutes. */ inline uint16_t timeCodeToMinutes(uint8_t rawCode, uint8_t rawModifier) { return rawCode * (uint16_t) 15 + (rawModifier & 0x0f); } +/** + * Extract the 'w', 's' 'u' suffix from the 'modifier' field, so that they can + * be compared against TIME_MODIFIER_W, TIME_MODIFIER_S and TIME_MODIFIER_U. + */ inline uint8_t toModifier(uint8_t rawModifier) { return rawModifier & 0xf0; } From a4e93cf9d15750bbea8c05771cbf41d355625572 Mon Sep 17 00:00:00 2001 From: Brian Park Date: Sat, 10 Aug 2019 07:17:55 -0700 Subject: [PATCH 22/55] USER_GUIDE.md: Update that TimeOffset and ExtendedZoneProcessor handles 1-minute resolution --- USER_GUIDE.md | 41 ++++++++-------------------- src/ace_time/ExtendedZoneProcessor.h | 29 ++++++++------------ src/ace_time/TimeZoneData.h | 6 +--- 3 files changed, 24 insertions(+), 52 deletions(-) diff --git a/USER_GUIDE.md b/USER_GUIDE.md index 4d0fe2600..706f9e6ce 100644 --- a/USER_GUIDE.md +++ b/USER_GUIDE.md @@ -565,13 +565,13 @@ timePeriod.printTo(Serial) ### TimeOffset A `TimeOffset` class represents an amount of time shift from a reference point. -Often the reference is the UTC time and this class represents the amount of time -shift from UTC. Currently (year 2019) every time zone in the world is shifted -from UTC by a multiple of 15 minutes (e.g. -03:30 or +01:00). `TimeOffset` is a -thin wrapper around a single `int8_t` type which can encode integers from -[-128, 127]. Internally -128 is used to indicate an error condition, so we can -represent a UTC shift of from -31:45 to +31:45 hours, which is more than enough -to encode all UTC offsets currently in use in the world. +This is usually used to represent a timezone's standard UTC offset or its DST +offset in the summer. The time resolution of this class changed from 15 minutes +(using a single byte `int8_t` implementation prior to v0.7) to 1 minute (using a +2-byte `int16_t` implementation since v0.7). The range of an `int16_t` is +[-32768, +32767], but -32768 is used to indicate an error condition, so the +actual range is [-32767, +32767] minutes. In practice, the range of values +actually used is probably within [-48, +48] hours, or [-2880, +2800] minutes ```C++ namespace ace_time { @@ -579,8 +579,8 @@ namespace ace_time { class TimeOffset { public: static TimeOffset forHours(int8_t hour); - static TimeOffset forHourMinute(int8_t hour, int8_t minute); static TimeOffset forMinutes(int16_t minutes); + static TimeOffset forHourMinute(int8_t hour, int8_t minute); int16_t toMinutes() const; int32_t toSeconds() const; @@ -598,8 +598,8 @@ A `TimeOffset` can be created using the factory methods: ```C++ auto offset = TimeOffset::forHours(-8); // -08:00 -auto offset = TimeOffset::forHourMinute(-2, -30); // -02:30 auto offset = TimeOffset::forMinutes(135); // +02:15 +auto offset = TimeOffset::forHourMinute(-2, -30); // -02:30 ``` If the time offset is negative, then both the hour and minute components of @@ -621,7 +621,7 @@ When a method in some class (e.g. `OffsetDateTime` or `ZonedDateTime` below) returns a `TimeOffset`, it is useful to indicate an error condition by returning the special value created by the factory method `TimeOffset::forError()`. This special error marker has the property that `TimeOffset::isError()` returns -`true`. Internally, this is an instance whose internal integer code is -128. +`true`. Internally, this is an instance whose internal integer is -32768. The convenience method `TimeOffset::isZero()` returns `true` if the offset has a zero offset. This is often used to determine if a timezone is currently @@ -2545,15 +2545,7 @@ did not think it would fit inside an Arduino controller. a signed integer, just like the old 32-bit Unix systems. The range of dates is 1901-12-13T20:45:52Z to 2038-01-19T03:14:07Z. * `TimeOffset` - * Implemented using `int8_t` to save memory. - * Represents time offsets in increments of 15 minutes. All timezones after - 2012 are in multiples of 15 minutes. - * Five zones before 2012 have transitions at 00:01 which cannot be - represented by this class. Those transitions have been truncated to 00:00. - See the bottom of the generated - [zonedb/zone_infos.h](src/ace_time/zonedb/zone_infos.h) and - [zonedbx/zone_infos.h](src/ace_time/zonedbx/zone_infos.h) files for the - up-to-date list. + * Implemented using `int16_t` in 1 minute increments. * `LocalDate`, `LocalDateTime` * These classes (and all other Date classes which are based on these) use a single 8-bit signed byte to represent the 'year' internally. This saves @@ -2600,17 +2592,6 @@ did not think it would fit inside an Arduino controller. from 2000 until 2038. * Java `java.time` library has an upper limit far beyond the year 2068 limit of `ZonedDateTime`. Testing was performed from 2000 to until 2050. -* `ExtendedZoneProcessor` - * There are 5 time zones (as of version 2019a of the TZ Database, see - the bottom of `zonedbx/zone_infos.h`) which have DST transitions that - occur at 00:01 (one minute after midnight). This transition cannot be - represented as a multiple of 15-minutes. The transition times of these - zones have been shifted to the nearest 15-minute boundary, in other words, - the transitions occur at 00:00 instead of 00:01. Clocks based on - `ExtendedZoneProcessor` will be off by one hour during the 1-minute - interval from 00:00 and 00:01. - * Fortunately all of these transitions happen before 2012. If you are - interested in only dates after 2019, then this will not affect you. * `NtpClock` * The `NtpClock` on an ESP8266 calls `WiFi.hostByName()` to resolve the IP address of the NTP server. Unfortunately, when I tested this diff --git a/src/ace_time/ExtendedZoneProcessor.h b/src/ace_time/ExtendedZoneProcessor.h index c2f14c934..cdc371951 100644 --- a/src/ace_time/ExtendedZoneProcessor.h +++ b/src/ace_time/ExtendedZoneProcessor.h @@ -633,30 +633,25 @@ class TransitionStorage { } // namespace extended /** - * An implementation of ZoneProcessor that works for *all* zones defined by the - * TZ Database (with some zones suffering a slight loss of accurancy described - * below). The supported zones are defined in the zonedbx/zone_infos.h header - * file. The constructor expects a pointer to one of the ZoneInfo structures - * declared in the zonedbx/zone_infos.h file. The zone_specifier.py file is a - * Python implementation of this class. + * An implementation of ZoneProcessor that supports for *all* zones defined by + * the TZ Database. The supported zones are defined in the zonedbx/zone_infos.h + * header file. The constructor expects a pointer to one of the ZoneInfo + * structures declared in the zonedbx/zone_infos.h file. The zone_specifier.py + * file is the initial Python implementation of this class, which got + * translated into C++. * - * Just like BasicZoneProcessor, UTC offsets are stored as a single signed byte - * in units of 15-minute increments to save memory. Fortunately, all current - * (year 2019) time zones have DST offsets at 15-minute boundaries. But in - * addition to the DST offset, this class uses a single signed byte to store - * the *time* at which a timezone changes the DST offset. + * Currently (as of v0.7), the underlying zoneinfo files (extended::ZoneInfo, + * etc) store the UTC and DST offsets of a timezone as a single signed byte in + * 15-minute increments. This is sufficient to accurate describe all time zones + * from the year 2000 until 2050. The AT and UNTIL transition times are stored + * using a 1-minute resolution, which correctly handles the 5 timezones whose + * DST transition times occur at 00:01. Those zones are: * - * There are current 5 timezones whose DST transition times are at 00:01 (i.e. - * 1 minute after midnight). Those transition times are truncated down by - * tzcompiler.py to the nearest 15-minutes, in other words to 00:00. Those - * zones are: * - America/Goose_Bay * - America/Moncton * - America/St_Johns * - Asia/Gaza * - Asia/Hebron - * For these zones, the transition to DST (or out of DST) will occur at - * midnight using AceTime, instead of at 00:01. * * Not thread-safe. */ diff --git a/src/ace_time/TimeZoneData.h b/src/ace_time/TimeZoneData.h index 52cafaebc..87cc38917 100644 --- a/src/ace_time/TimeZoneData.h +++ b/src/ace_time/TimeZoneData.h @@ -32,11 +32,7 @@ struct TimeZoneData { uint8_t type; union { - /** - * Used for kTypeManual. Use minutes instead of TimeOffsetCode (i.e. - * 15-minute increments in the off chance that a future version of this - * library supports timezones that shift by one-minute increments. - */ + /** Used for kTypeManual. */ struct { int16_t stdOffsetMinutes; int16_t dstOffsetMinutes; From 386ec2286d988df5099e0f9e88403aca3a0bdfe8 Mon Sep 17 00:00:00 2001 From: Brian Park Date: Sat, 10 Aug 2019 08:31:21 -0700 Subject: [PATCH 23/55] tests/ZonedDateTimeExtendedTest: Remove debugging statements from prior debugging session; reduces RAM making it pass again on a Nano --- .../ZonedDateTimeExtendedTest.ino | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/tests/ZonedDateTimeExtendedTest/ZonedDateTimeExtendedTest.ino b/tests/ZonedDateTimeExtendedTest/ZonedDateTimeExtendedTest.ino index a0ef3118b..f03b1420f 100644 --- a/tests/ZonedDateTimeExtendedTest/ZonedDateTimeExtendedTest.ino +++ b/tests/ZonedDateTimeExtendedTest/ZonedDateTimeExtendedTest.ino @@ -44,7 +44,8 @@ test(ZonedDateTimeExtendedTest, forComponents_beforeDst) { // 01:59 should resolve to 01:59-08:00 auto dt = ZonedDateTime::forComponents(2018, 3, 11, 1, 59, 0, tz); - assertEqual(TimeOffset::forHours(-8).toMinutes(), dt.timeOffset().toMinutes()); + assertEqual(TimeOffset::forHours(-8).toMinutes(), + dt.timeOffset().toMinutes()); auto expected = LocalDateTime::forComponents(2018, 3, 11, 1, 59, 0); assertTrue(expected == dt.localDateTime()); } @@ -57,7 +58,8 @@ test(ZonedDateTimeExtendedTest, forComponents_inDstGap) { // timeOffset, i.e. the most recent matching Transition, so this is // interpreted as 02:01-08:00 which gets normalized to 03:01-07:00. auto dt = ZonedDateTime::forComponents(2018, 3, 11, 2, 1, 0, tz); - assertEqual(TimeOffset::forHours(-7).toMinutes(), dt.timeOffset().toMinutes()); + assertEqual(TimeOffset::forHours(-7).toMinutes(), + dt.timeOffset().toMinutes()); auto expected = LocalDateTime::forComponents(2018, 3, 11, 3, 1, 0); assertTrue(expected == dt.localDateTime()); } @@ -68,8 +70,8 @@ test(ZonedDateTimeExtendedTest, forComponents_inDst) { // 03:01 should resolve to 03:01-07:00. auto dt = ZonedDateTime::forComponents(2018, 3, 11, 3, 1, 0, tz); - assertEqual(TimeOffset::forHours(-7).toMinutes(), dt.timeOffset().toMinutes()); - dt.printTo(Serial); Serial.println(); + assertEqual(TimeOffset::forHours(-7).toMinutes(), + dt.timeOffset().toMinutes()); auto expected = LocalDateTime::forComponents(2018, 3, 11, 3, 1, 0); assertTrue(expected == dt.localDateTime()); } @@ -81,7 +83,8 @@ test(ZonedDateTimeExtendedTest, forComponents_beforeStd) { // 00:59 is an hour before the DST->STD transition, so should return // 00:59-07:00. auto dt = ZonedDateTime::forComponents(2018, 11, 4, 0, 59, 0, tz); - assertEqual(TimeOffset::forHours(-7).toMinutes(), dt.timeOffset().toMinutes()); + assertEqual(TimeOffset::forHours(-7).toMinutes(), + dt.timeOffset().toMinutes()); auto expected = LocalDateTime::forComponents(2018, 11, 4, 0, 59, 0); assertTrue(expected == dt.localDateTime()); } @@ -93,7 +96,8 @@ test(ZonedDateTimeExtendedTest, forComponents_inOverlap) { // There were two instances of 01:01. The algorithm picks the later offset, // i.e. the most recent matching Transition, so should resolve to 01:01-08:00. auto dt = ZonedDateTime::forComponents(2018, 11, 4, 1, 1, 0, tz); - assertEqual(TimeOffset::forHours(-8).toMinutes(), dt.timeOffset().toMinutes()); + assertEqual(TimeOffset::forHours(-8).toMinutes(), + dt.timeOffset().toMinutes()); auto expected = LocalDateTime::forComponents(2018, 11, 4, 1, 1, 0); assertTrue(expected == dt.localDateTime()); } @@ -124,9 +128,6 @@ void setup() { #endif SERIAL_PORT_MONITOR.begin(115200); while(!SERIAL_PORT_MONITOR); // for the Arduino Leonardo/Micro only - - TestRunner::exclude("*"); - TestRunner::include("ZonedDateTimeExtendedTest", "forComponents_inDst"); } void loop() { From bbd70aebecbf51549c30c9819c9d286e53bab77a Mon Sep 17 00:00:00 2001 From: Brian Park Date: Sat, 10 Aug 2019 08:59:11 -0700 Subject: [PATCH 24/55] tools: Fix diagnostic message when offset_seconds is negative --- tools/transformer.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/transformer.py b/tools/transformer.py index 9136f1a5b..5db614fb5 100644 --- a/tools/transformer.py +++ b/tools/transformer.py @@ -466,7 +466,7 @@ def _create_zones_with_expanded_offset_string(self, zones_map): else: hm = seconds_to_hm_string(offset_seconds_truncated) _add_reason(notable_zones, name, - "GMTOFF '{offset_string}' truncated to '{hm}'") + f"GMTOFF '{offset_string}' truncated to '{hm}'") era.offsetSeconds = offset_seconds era.offsetSecondsTruncated = offset_seconds_truncated @@ -1417,14 +1417,14 @@ def seconds_to_hm_string(seconds): """Convert seconds to hh:mm. Assumes that seconds is multiples of 60. """ if seconds < 0: - sign = -1 + sign = '-' seconds = -seconds else: - sign = 1 + sign = '' minutes = seconds // 60 m = minutes % 60 h = minutes // 60 - return f'{h:02}:{m:02}' + return f'{sign}{h:02}:{m:02}' def hms_to_seconds(h, m, s): From f996a9a44ba4c7182a0a2c9704fc1d7f40cba3e2 Mon Sep 17 00:00:00 2001 From: Brian Park Date: Mon, 12 Aug 2019 08:19:37 -0700 Subject: [PATCH 25/55] examples/AutoBenchmark: Fix long lines --- examples/AutoBenchmark/AutoBenchmark.ino | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/AutoBenchmark/AutoBenchmark.ino b/examples/AutoBenchmark/AutoBenchmark.ino index 0003298ea..0723f99ae 100644 --- a/examples/AutoBenchmark/AutoBenchmark.ino +++ b/examples/AutoBenchmark/AutoBenchmark.ino @@ -17,8 +17,8 @@ void setup() { delay(1000); #endif - SERIAL_PORT_MONITOR.begin(115200); // ESP8266 default of 74880 not supported on Linux - while (!SERIAL_PORT_MONITOR); // Wait until SERIAL_PORT_MONITOR is ready - Leonardo/Micro + SERIAL_PORT_MONITOR.begin(115200); + while (!SERIAL_PORT_MONITOR); // Wait until ready - Leonardo/Micro // ace_time primitives From c549a1554e4dd3930e12f70bc1bee6444824f940 Mon Sep 17 00:00:00 2001 From: Brian Park Date: Mon, 12 Aug 2019 14:10:11 -0700 Subject: [PATCH 26/55] tests/validation/BasicValidationUsingHinnantDateTest: Initial skeleton that generatoes validation_data.cpp --- .../BasicValidationUsingHinnantDateTest.ino | 33 ++ .../Makefile | 29 ++ .../README.md | 47 +++ .../TransitionTest.h | 53 ++++ .../ValidationDataType.h | 31 ++ .../test_data_generator.cpp | 288 ++++++++++++++++++ 6 files changed, 481 insertions(+) create mode 100644 tests/validation/BasicValidationUsingHinnantDateTest/BasicValidationUsingHinnantDateTest.ino create mode 100644 tests/validation/BasicValidationUsingHinnantDateTest/Makefile create mode 100644 tests/validation/BasicValidationUsingHinnantDateTest/README.md create mode 100644 tests/validation/BasicValidationUsingHinnantDateTest/TransitionTest.h create mode 100644 tests/validation/BasicValidationUsingHinnantDateTest/ValidationDataType.h create mode 100644 tests/validation/BasicValidationUsingHinnantDateTest/test_data_generator.cpp diff --git a/tests/validation/BasicValidationUsingHinnantDateTest/BasicValidationUsingHinnantDateTest.ino b/tests/validation/BasicValidationUsingHinnantDateTest/BasicValidationUsingHinnantDateTest.ino new file mode 100644 index 000000000..0d9b5b2ea --- /dev/null +++ b/tests/validation/BasicValidationUsingHinnantDateTest/BasicValidationUsingHinnantDateTest.ino @@ -0,0 +1,33 @@ +#line 2 "BasicValidationUsingJavaTest.ino" + +/* + * This unit test depends on 'validation_data.cpp' which is so large that it + * will likely not compile on an Arduino environment. It can however be run on + * a Linux or MacOS environment using the provided Makefile. + */ + +#include +#include + +using namespace aunit; +using namespace ace_time; + +// -------------------------------------------------------------------------- + +void setup() { +#if defined(ARDUINO) + delay(1000); // wait for stability on some boards to prevent garbage SERIAL_PORT_MONITOR +#endif + SERIAL_PORT_MONITOR.begin(115200); // ESP8266 default of 74880 not supported on Linux + while(!SERIAL_PORT_MONITOR); // for the Arduino Leonardo/Micro only + +#if 0 + TestRunner::exclude("*"); + //TestRunner::include("TransitionTest", "America_Los_Angeles"); + TestRunner::include("TransitionTest", "America_Moncton"); +#endif +} + +void loop() { + TestRunner::run(); +} diff --git a/tests/validation/BasicValidationUsingHinnantDateTest/Makefile b/tests/validation/BasicValidationUsingHinnantDateTest/Makefile new file mode 100644 index 000000000..0cfada180 --- /dev/null +++ b/tests/validation/BasicValidationUsingHinnantDateTest/Makefile @@ -0,0 +1,29 @@ +# See https://github.com/bxparks/UnixHostDuino for documentation about this +# Makefile to compile and run Arduino programs natively on Linux or MacOS. + +GENERATED := zones.txt validation_data.cpp validation_data.h \ + validation_tests.cpp +OBJS := validation_data.o validation_tests.o test_data_generator.o +APP_NAME := BasicValidationUsingJavaTest +ARDUINO_LIBS := AUnit AceTime +include ../../../../UnixHostDuino/UnixHostDuino.mk + +.PHONY: $(GENERATED) + +runtests: + ./$(APP_NAME).out + +validation_data.cpp: zones.txt test_data_generator.out + ./test_data_generator.out --db_namespace zonedb2018g \ + --start_year 2000 --until_year 2050 \ + < zones.txt > $@ + +zones.txt: + ../../../tools/tzcompiler.sh --tag 2019a --scope basic --action zonedb \ + --language java + +HINNANT_DATE_DIR := ../../../../date + +test_data_generator.out: test_data_generator.cpp + $(CXX) -I $(HINNANT_DATE_DIR)/include -Wall -std=gnu++11 -o $@ $^ \ + $(HINNANT_DATE_DIR)/src/*.cpp -lcurl diff --git a/tests/validation/BasicValidationUsingHinnantDateTest/README.md b/tests/validation/BasicValidationUsingHinnantDateTest/README.md new file mode 100644 index 000000000..04babab40 --- /dev/null +++ b/tests/validation/BasicValidationUsingHinnantDateTest/README.md @@ -0,0 +1,47 @@ +# BasicValidationUsingHinnantDateTest + +This unit test compares the DST transitions calculated by the +`BasicZoneProcessor` class (which uses the `zonedb` data files) with the +`validation_data.cpp` file generated by the +`../../tools/cpp/test_data_generator` program which uses the [Hinnant Date +Library](https://github.com/HowardHinnant/date). + +## Running the Test + +Assuming that you have `g++` and `make` installed, just type: +``` +$ make clean && make -j 4 +$ ./BasicValidationUsingHinnantDateTest.out +TestRunner started on 268 test(s). +Test TransitionTest_Africa_Abidjan passed. +... +Test TransitionTest_Pacific_Wallis passed. +TestRunner duration: 0.070 seconds. +TestRunner summary: 268 passed, 0 failed, 0 skipped, 0 timed out, out of 268 test(s). +``` + +## Regenerating the Zoneinfo Data + +The TZ Database version used by the `TestDataGenerator.java` program and the +version that generated the `zonedb` files must match for this unit test to +succeed. The JDK version used to run this test was `openjdk version "11.0.3" +2019-04-16` (see `java -version`) which seems to use version 2018g. The default +zoneinfo files in `src/ace_time/zonedb` are generated using the latest TZ +version (currently 2019a). Since these don't match, it was necessary to create a +custom `zonedb` database in `./zonedb2018g/` directory. + +The `zonedb2018g` files can be regenerated using: +``` +$ cd zonedb2018g +$ make +``` + +## Compiling the HinnantDate Test Data Generator + +The `Makefile` assumes that you have already compiled the +`../../../tools/cpp/test_data_generator.out` program. Type the following: + +``` +$ cd ../../../tools/cpp +$ make +``` diff --git a/tests/validation/BasicValidationUsingHinnantDateTest/TransitionTest.h b/tests/validation/BasicValidationUsingHinnantDateTest/TransitionTest.h new file mode 100644 index 000000000..ad7add488 --- /dev/null +++ b/tests/validation/BasicValidationUsingHinnantDateTest/TransitionTest.h @@ -0,0 +1,53 @@ +#ifndef VALIDATION_TEST_TRANSITION_TEST_H +#define VALIDATION_TEST_TRANSITION_TEST_H + +#include +#include "ValidationDataType.h" +#include "ace_time/common/logging.h" + +#define DEBUG 0 + +class TransitionTest: public aunit::TestOnce { + protected: + void assertValid(const ValidationData* testData) { + if (DEBUG) { + enableVerbosity(aunit::Verbosity::kAssertionPassed); + } + assertTrue(true); + + const basic::ZoneInfo* zoneInfo = testData->zoneInfo; + BasicZoneProcessor zoneProcessor; + TimeZone tz = TimeZone::forZoneInfo(zoneInfo, &zoneProcessor); + for (uint16_t i = 0; i < testData->numItems; i++) { + const ValidationItem& item = testData->items[i]; + acetime_t epochSeconds = item.epochSeconds; + + TimeOffset timeOffset = tz.getUtcOffset(epochSeconds); + if (DEBUG) { + ace_time::logging::printf("==== test index: %d\n", i); + if (sizeof(acetime_t) == sizeof(int)) { + ace_time::logging::printf("epochSeconds: %d\n", epochSeconds); + } else { + ace_time::logging::printf("epochSeconds: %ld\n", epochSeconds); + } + zoneProcessor.log(); + } + + // Verify timeOffset + assertEqual(item.timeOffsetMinutes, timeOffset.toMinutes()); + + // Verify date components + ZonedDateTime dt = ZonedDateTime::forEpochSeconds(epochSeconds, tz); + assertEqual(item.year, dt.year()); + assertEqual(item.month, dt.month()); + assertEqual(item.day, dt.day()); + assertEqual(item.hour, dt.hour()); + assertEqual(item.minute, dt.minute()); + assertEqual(item.second, dt.second()); + } + } +}; + +#undef DEBUG + +#endif diff --git a/tests/validation/BasicValidationUsingHinnantDateTest/ValidationDataType.h b/tests/validation/BasicValidationUsingHinnantDateTest/ValidationDataType.h new file mode 100644 index 000000000..4b95c2878 --- /dev/null +++ b/tests/validation/BasicValidationUsingHinnantDateTest/ValidationDataType.h @@ -0,0 +1,31 @@ +#ifndef VALIDATION_DATA_TYPE_H +#define VALIDATION_DATA_TYPE_H + +#include + +using namespace ace_time; + +/** The epochSecond and the expected UTC offset and dateTime components. */ +struct ValidationItem { + acetime_t const epochSeconds; + int16_t const timeOffsetMinutes; + int16_t const deltaOffsetMinutes; + int16_t const year; + uint8_t const month; + uint8_t const day; + uint8_t const hour; + uint8_t const minute; + uint8_t const second; +}; + +/** + * Header that points to an array of all ValidationItems and the specific + * basic::ZoneInfo that is being tested. + */ +struct ValidationData { + const basic::ZoneInfo* const zoneInfo; + uint16_t const numItems; + const ValidationItem* const items; +}; + +#endif diff --git a/tests/validation/BasicValidationUsingHinnantDateTest/test_data_generator.cpp b/tests/validation/BasicValidationUsingHinnantDateTest/test_data_generator.cpp new file mode 100644 index 000000000..ac9806e98 --- /dev/null +++ b/tests/validation/BasicValidationUsingHinnantDateTest/test_data_generator.cpp @@ -0,0 +1,288 @@ +/* + * Generate the validation_data.* files for the zones given on the STDIN. The + * transition time and UTC offsets are calculated using Howard Hinnant's date.h + * and tz.h library. + */ + +#include +#include +#include +#include +#include +#include + +#define ONE_ZONE 1 + +using namespace date; +using namespace std::chrono; +using namespace std; + +const int startYear = 2000; +const int untilYear = 2050; + +const long SECONDS_SINCE_UNIX_EPOCH = 946684800; + +/** DateTime components. */ +struct DateTime { + int year; + unsigned month; + unsigned day; + int hour; + int minute; + int second; +}; + +/** + * A test item, containing the epochSeconds with its expected DateTime + * components. + */ +struct TestItem { + long epochSeconds; + int utcOffset; // minutes + int dstOffset; // minutes + DateTime dateTime; + char type; //'A', 'B', 'S', or 'Y' +}; + +/** + * Convert a zoned_time<> (which is an aggregation of time_zone and sys_time<>, + * and sys_time<> is an alias for a std::chrono::time_point<>) into components. + * See + * https://github.com/HowardHinnant/date/wiki/Examples-and-Recipes#components_to_time_point + * which describes how to convert a time_point<> into components. (I don't know + * why it has to be so complicated...) + */ +DateTime toDateTime(local_time lt) { + auto daypoint = floor(lt); + auto ymd = year_month_day(daypoint); + auto tod = make_time(lt - daypoint); + return DateTime{ + int(ymd.year()), + unsigned(ymd.month()), + unsigned(ymd.day()), + (int)tod.hours().count(), + (int)tod.minutes().count(), + (int)tod.seconds().count() + }; +} + +/** + * Convert the Unix epoch seconds into a ZonedDateTime, then convert that into + * TestItem that has the Date/Time components broken out, along with the + * expected DST offset and abbreviation. + */ +TestItem toTestItem(const time_zone& tz, sys_seconds st, char type) { + sys_info info = tz.get_info(st); + seconds unixSeconds = floor(st.time_since_epoch()); + zoned_time zdt = make_zoned(&tz, st); + local_time lt = zdt.get_local_time(); + DateTime dateTime = toDateTime(lt); + return TestItem{ + unixSeconds.count() - SECONDS_SINCE_UNIX_EPOCH, + (int)info.offset.count() / 60, + (int)info.save.count(), + dateTime, + type + }; +} + +void addTestItem(map>& testData, + const string& zoneName, const TestItem& item) { + auto it = testData.find(zoneName); + if (it == testData.end()) { + testData[zoneName] = vector(); + } + // Argh: There's probably a way to reuse the 'it' iterator and avoid + // a second lookup but I don't have the time and patience to figure out the + // C++ map<> API, and this is good enough for this program. + auto &v = testData[zoneName]; + v.push_back(item); +} + +/** + * Add a TestItem for one second before a DST transition, and right at the + * the DST transition. + */ +void addTransitions(map>& testData, + const time_zone& tz, const string& zoneName, int startYear, int untilYear) { + sys_seconds begin = sys_days{January/1/startYear} + seconds(0); + sys_seconds end = sys_days{January/1/untilYear} + seconds(0); + + do { + // One second before the DST transition. + sys_seconds before = begin - seconds(1); + auto item = toTestItem(tz, before, 'A'); + addTestItem(testData, zoneName, item); + + // At the DST transition. + item = toTestItem(tz, begin, 'B'); + addTestItem(testData, zoneName, item); + + sys_info info = tz.get_info(begin); + begin = info.end; + } while (begin < end); +} + +/** + * Add a TestItem for the 1st of each month (using the local time) + * as a sanity sample, to make sure things are working, even for timezones with + * no DST transitions. See + * https://github.com/HowardHinnant/date/wiki/Examples-and-Recipes#obtaining-a-time_point-from-ymd-hms-components + * to get code for converting date/time components to a time_point<> (aka + * sys_time<>). + */ +void addMonthlySamples(map>& testData, + const time_zone& tz, const string& zoneName, int startYear, int untilYear) { + + for (int y = startYear; y < untilYear; y++) { + // Add the 1st of every month... + for (int m = 1; m <= 12; m++) { + char type = 'S'; + + // ...unless that day is ambiguous, in which case the Hinnant date + // library throws an exception. Unfortunately, I cannot understand + // the documentation to figure out how to do what I want, so just punt + // and use the next day. + for (int d = 1; d < 29; d++) { + local_days ld = local_days{month(m)/d/year(y)}; + try { + zoned_time zdt = make_zoned(&tz, ld + seconds(0)); + + sys_seconds ss = zdt.get_sys_time(); + TestItem item = toTestItem(tz, ss, type); + addTestItem(testData, zoneName, item); + break; + } catch (...) { + type = 'T'; + } + } + } + + // Add the last day of the year... + local_days ld = local_days{year(y)/December/1}; + try { + zoned_time zdt = make_zoned(&tz, ld + seconds(0)); + sys_seconds ss = zdt.get_sys_time(); + TestItem item = toTestItem(tz, ss, 'Y'); + addTestItem(testData, zoneName, item); + } catch (...) { + // ...unless it's an ambiguous date, in which case just skip it. + } + } +} + +/** Insert TestItems for the given 'zoneName' into testData. */ +void processZone(map>& testData, + const string& zoneName, int startYear, int untilYear) { + auto* tzp = locate_zone(zoneName); + if (tzp == nullptr) { + cerr << "Zone " << zoneName << " not found\n"; + return; + } + + addTransitions(testData, *tzp, zoneName, startYear, untilYear); + addMonthlySamples(testData, *tzp, zoneName, startYear, untilYear); +} + +/** + * Trim from start (in place). See https://stackoverflow.com/questions/216823 + */ +inline void ltrim(string &s) { + s.erase(s.begin(), find_if(s.begin(), s.end(), [](int ch) { + return !isspace(ch); + })); +} + +/** Read the 'zones.txt' from the stdin, and process each zone. */ +void processZones(map>& testData) { + string line; + while (getline(cin, line)) { + ltrim(line); + if (line.empty()) continue; + if (line[0] == '#') continue; + processZone(testData, line, startYear, untilYear); + } +} + +/** + * Replace all occurences of 'from' string to 'to' string. + * See https://stackoverflow.com/questions/2896600. + */ +void replaceAll(string& source, const string& from, const string& to) { + string newString; + newString.reserve(source.length()); // avoids a few memory allocations + + string::size_type lastPos = 0; + string::size_type findPos; + + while(string::npos != (findPos = source.find(from, lastPos))) { + newString.append(source, lastPos, findPos - lastPos); + newString += to; + lastPos = findPos + from.length(); + } + + // Care for the rest after last occurrence + newString += source.substr(lastPos); + + source.swap(newString); +} + +/** + * Convert "America/Los_Angeles" into an identifier that can be used in a C/C++ + * variable, is "America_Los_Angeles". Uses the same algorithm as the + * argenerator.py script. + */ +string normalizeName(const string& name) { + string tmp = name; + replaceAll(tmp, "+", "_PLUS_"); + replaceAll(tmp, "-", "_"); + return regex_replace(tmp, regex("[^0-9a-zA-Z]"), "_"); +} + +void printTestItem(const TestItem& item) { + printf( + " { %10ld, %4d, %4d, %4d, %2u, %2u, %2d, %2d, %2d }, // type=%c\n", + item.epochSeconds, + item.utcOffset, + item.dstOffset, + item.dateTime.year, + item.dateTime.month, + item.dateTime.day, + item.dateTime.hour, + item.dateTime.minute, + item.dateTime.second, + item.type); +} + +/** Generate the validation_data.cpp file for timezone tz. */ +void printTestData(const map>& testData) { + for (const auto& p : testData) { + auto name = normalizeName(p.first); + printf("static const ValidationItem kValidationItems%s[] = {\n", + name.c_str()); + printf(" // epoch, utc, dst, y, m, d, h, m, s\n"); + for (const auto& item : p.second) { + printTestItem(item); + } + printf("};\n"); + } +} + +/** Sort the TestItems according to epochSeconds. */ +void sortTestData(map>& testData) { + for (auto& p : testData) { + sort(p.second.begin(), p.second.end(), + [](const TestItem& a, const TestItem& b) { + return a.epochSeconds < b.epochSeconds; + } + ); + } +} + +int main() { + map> testData; + processZones(testData); + sortTestData(testData); + printTestData(testData); + return 0; +} From ecafd04caad6ea7f0a349f1675469c48ec8959a2 Mon Sep 17 00:00:00 2001 From: Brian Park Date: Mon, 12 Aug 2019 14:28:55 -0700 Subject: [PATCH 27/55] tests/validation/BasicValidationUsingHinnantDateTest: Add readZones() method and simplify calling arguments --- .../test_data_generator.cpp | 22 ++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/tests/validation/BasicValidationUsingHinnantDateTest/test_data_generator.cpp b/tests/validation/BasicValidationUsingHinnantDateTest/test_data_generator.cpp index ac9806e98..d79667153 100644 --- a/tests/validation/BasicValidationUsingHinnantDateTest/test_data_generator.cpp +++ b/tests/validation/BasicValidationUsingHinnantDateTest/test_data_generator.cpp @@ -41,7 +41,7 @@ struct TestItem { int utcOffset; // minutes int dstOffset; // minutes DateTime dateTime; - char type; //'A', 'B', 'S', or 'Y' + char type; //'A', 'B', 'S', 'T' or 'Y' }; /** @@ -193,15 +193,27 @@ inline void ltrim(string &s) { })); } +/** Process each zoneName in zones and insert into testData map. */ +map> processZones(const vector& zones) { + map> testData; + for (string zoneName : zones) { + processZone(testData, zoneName, startYear, untilYear); + } + return testData; +} + /** Read the 'zones.txt' from the stdin, and process each zone. */ -void processZones(map>& testData) { +vector readZones() { + vector zones; string line; while (getline(cin, line)) { ltrim(line); if (line.empty()) continue; if (line[0] == '#') continue; - processZone(testData, line, startYear, untilYear); + zones.push_back(line); } + + return zones; } /** @@ -280,8 +292,8 @@ void sortTestData(map>& testData) { } int main() { - map> testData; - processZones(testData); + vector zones = readZones(); + map> testData = processZones(zones); sortTestData(testData); printTestData(testData); return 0; From ceb6fc0f00890ed5ee3e409f463bafaddb5e838b Mon Sep 17 00:00:00 2001 From: Brian Park Date: Mon, 12 Aug 2019 15:05:12 -0700 Subject: [PATCH 28/55] test_data_generator.cpp: Add headers and dividers --- .../test_data_generator.cpp | 41 ++++++++++++++++--- 1 file changed, 36 insertions(+), 5 deletions(-) diff --git a/tests/validation/BasicValidationUsingHinnantDateTest/test_data_generator.cpp b/tests/validation/BasicValidationUsingHinnantDateTest/test_data_generator.cpp index d79667153..3cc934797 100644 --- a/tests/validation/BasicValidationUsingHinnantDateTest/test_data_generator.cpp +++ b/tests/validation/BasicValidationUsingHinnantDateTest/test_data_generator.cpp @@ -267,17 +267,48 @@ void printTestItem(const TestItem& item) { } /** Generate the validation_data.cpp file for timezone tz. */ -void printTestData(const map>& testData) { +void printDataCpp(const map>& testData) { + printf("#include \n"); + printf("#include \"zonedb2018g/zone_infos.h\"\n"); + printf("#include \"zonedb2018g/zone_policies.h\"\n"); + printf("#include \"validation_data.h\"\n"); + printf("\n"); + printf("namespace ace_time {\n"); + printf("namespace zonedb2018g {\n"); + printf("\n"); + for (const auto& p : testData) { - auto name = normalizeName(p.first); + const auto zoneName = p.first; + const auto normalizedName = normalizeName(zoneName); + const auto& testItems = p.second; + + printf( + "//--------------------------------------------------------------------\n"); + printf("// Zone name: %s\n", zoneName.c_str()); + printf( + "//--------------------------------------------------------------------\n"); + printf("\n"); + printf("static const ValidationItem kValidationItems%s[] = {\n", - name.c_str()); + normalizedName.c_str()); printf(" // epoch, utc, dst, y, m, d, h, m, s\n"); - for (const auto& item : p.second) { + for (const TestItem& item : testItems) { printTestItem(item); } printf("};\n"); + printf("\n"); + + printf("const ValidationData kValidationData%s = {\n", + normalizedName.c_str()); + printf(" &kZone%s /*zoneInfo*/,\n", normalizedName.c_str()); + printf(" sizeof(kValidationItems%s)/sizeof(ValidationItem) /*numItems*/\n", + normalizedName.c_str()); + printf(" kValidationItems%s /*items*/,\n", normalizedName.c_str()); + printf("};\n"); + printf("\n"); } + printf("}\n"); + printf("}\n"); } /** Sort the TestItems according to epochSeconds. */ @@ -295,6 +326,6 @@ int main() { vector zones = readZones(); map> testData = processZones(zones); sortTestData(testData); - printTestData(testData); + printDataCpp(testData); return 0; } From 53f739dda7398e764d8ba63437ad2011a80d0e8a Mon Sep 17 00:00:00 2001 From: Brian Park Date: Mon, 12 Aug 2019 16:41:02 -0700 Subject: [PATCH 29/55] test_data_generator.cpp: Add command line flg parsing --- .../Makefile | 4 +- .../test_data_generator.cpp | 143 +++++++++++++----- 2 files changed, 110 insertions(+), 37 deletions(-) diff --git a/tests/validation/BasicValidationUsingHinnantDateTest/Makefile b/tests/validation/BasicValidationUsingHinnantDateTest/Makefile index 0cfada180..55f2c1967 100644 --- a/tests/validation/BasicValidationUsingHinnantDateTest/Makefile +++ b/tests/validation/BasicValidationUsingHinnantDateTest/Makefile @@ -8,13 +8,13 @@ APP_NAME := BasicValidationUsingJavaTest ARDUINO_LIBS := AUnit AceTime include ../../../../UnixHostDuino/UnixHostDuino.mk -.PHONY: $(GENERATED) +#.PHONY: $(GENERATED) runtests: ./$(APP_NAME).out validation_data.cpp: zones.txt test_data_generator.out - ./test_data_generator.out --db_namespace zonedb2018g \ + ./test_data_generator.out --scope basic --db_namespace zonedb2018g \ --start_year 2000 --until_year 2050 \ < zones.txt > $@ diff --git a/tests/validation/BasicValidationUsingHinnantDateTest/test_data_generator.cpp b/tests/validation/BasicValidationUsingHinnantDateTest/test_data_generator.cpp index 3cc934797..e700f58fc 100644 --- a/tests/validation/BasicValidationUsingHinnantDateTest/test_data_generator.cpp +++ b/tests/validation/BasicValidationUsingHinnantDateTest/test_data_generator.cpp @@ -2,6 +2,13 @@ * Generate the validation_data.* files for the zones given on the STDIN. The * transition time and UTC offsets are calculated using Howard Hinnant's date.h * and tz.h library. + * + * Usage: + * $ ./test_data_generator.out \ + * --scope (basic | extended) \ + * --db_namespace (db) \ + * [--start_year start] \ + * [--until_year until] < zones.txt */ #include @@ -11,17 +18,17 @@ #include #include -#define ONE_ZONE 1 - using namespace date; using namespace std::chrono; using namespace std; -const int startYear = 2000; -const int untilYear = 2050; - +/** Difference between Unix epoch (1970-01-1) and AceTime Epoch (2000-01-01). */ const long SECONDS_SINCE_UNIX_EPOCH = 946684800; +const char VALIDATION_DATA_CPP[] = "validation_data.cpp"; +const char VALIDATION_DATA_H[] = "validation_data.h"; +const char VALIDATION_TESTS_CPP[] = "validation_tests.cpp"; + /** DateTime components. */ struct DateTime { int year; @@ -44,6 +51,12 @@ struct TestItem { char type; //'A', 'B', 'S', 'T' or 'Y' }; +// Command line arguments +string scope = ""; +string dbNamespace = ""; +int startYear = 2000; +int untilYear = 2050; + /** * Convert a zoned_time<> (which is an aggregation of time_zone and sys_time<>, * and sys_time<> is an alias for a std::chrono::time_point<>) into components. @@ -174,9 +187,9 @@ void addMonthlySamples(map>& testData, /** Insert TestItems for the given 'zoneName' into testData. */ void processZone(map>& testData, const string& zoneName, int startYear, int untilYear) { - auto* tzp = locate_zone(zoneName); + auto* tzp = locate_zone(zoneName); if (tzp == nullptr) { - cerr << "Zone " << zoneName << " not found\n"; + fprintf(stderr, "Zone %s not found\n", zoneName.c_str()); return; } @@ -251,8 +264,8 @@ string normalizeName(const string& name) { return regex_replace(tmp, regex("[^0-9a-zA-Z]"), "_"); } -void printTestItem(const TestItem& item) { - printf( +void printTestItem(FILE* fp, const TestItem& item) { + fprintf(fp, " { %10ld, %4d, %4d, %4d, %2u, %2u, %2d, %2d, %2d }, // type=%c\n", item.epochSeconds, item.utcOffset, @@ -268,47 +281,52 @@ void printTestItem(const TestItem& item) { /** Generate the validation_data.cpp file for timezone tz. */ void printDataCpp(const map>& testData) { - printf("#include \n"); - printf("#include \"zonedb2018g/zone_infos.h\"\n"); - printf("#include \"zonedb2018g/zone_policies.h\"\n"); - printf("#include \"validation_data.h\"\n"); - printf("\n"); - printf("namespace ace_time {\n"); - printf("namespace zonedb2018g {\n"); - printf("\n"); + FILE* fp = stdout; + fprintf(fp, "// This is an auto-generated file.\n"); + fprintf(fp, "// DO NOT EDIT\n"); + fprintf(fp, "\n"); + fprintf(fp, "#include \n"); + fprintf(fp, "#include \"zonedb2018g/zone_infos.h\"\n"); + fprintf(fp, "#include \"zonedb2018g/zone_policies.h\"\n"); + fprintf(fp, "#include \"validation_data.h\"\n"); + fprintf(fp, "\n"); + fprintf(fp, "namespace ace_time {\n"); + fprintf(fp, "namespace zonedb2018g {\n"); + fprintf(fp, "\n"); for (const auto& p : testData) { const auto zoneName = p.first; const auto normalizedName = normalizeName(zoneName); const auto& testItems = p.second; - printf( + fprintf(fp, "//--------------------------------------------------------------------\n"); - printf("// Zone name: %s\n", zoneName.c_str()); - printf( + fprintf(fp, "// Zone name: %s\n", zoneName.c_str()); + fprintf(fp, "//--------------------------------------------------------------------\n"); - printf("\n"); + fprintf(fp, "\n"); - printf("static const ValidationItem kValidationItems%s[] = {\n", + fprintf(fp, "static const ValidationItem kValidationItems%s[] = {\n", normalizedName.c_str()); - printf(" // epoch, utc, dst, y, m, d, h, m, s\n"); + fprintf(fp, " // epoch, utc, dst, y, m, d, h, m, s\n"); for (const TestItem& item : testItems) { - printTestItem(item); + printTestItem(fp, item); } - printf("};\n"); - printf("\n"); + fprintf(fp, "};\n"); + fprintf(fp, "\n"); - printf("const ValidationData kValidationData%s = {\n", + fprintf(fp, "const ValidationData kValidationData%s = {\n", normalizedName.c_str()); - printf(" &kZone%s /*zoneInfo*/,\n", normalizedName.c_str()); - printf(" sizeof(kValidationItems%s)/sizeof(ValidationItem) /*numItems*/\n", + fprintf(fp, " &kZone%s /*zoneInfo*/,\n", normalizedName.c_str()); + fprintf(fp, + " sizeof(kValidationItems%s)/sizeof(ValidationItem) /*numItems*/\n", normalizedName.c_str()); - printf(" kValidationItems%s /*items*/,\n", normalizedName.c_str()); - printf("};\n"); - printf("\n"); + fprintf(fp, " kValidationItems%s /*items*/,\n", normalizedName.c_str()); + fprintf(fp, "};\n"); + fprintf(fp, "\n"); } - printf("}\n"); - printf("}\n"); + fprintf(fp, "}\n"); + fprintf(fp, "}\n"); } /** Sort the TestItems according to epochSeconds. */ @@ -322,7 +340,62 @@ void sortTestData(map>& testData) { } } -int main() { +void usageAndExit() { + fprintf(stderr, + "Usage: test_data_generator --scope (basic | extended) --db_namespace db\n" + " [--start_year start] [--until_year until] < zones.txt\n"); + exit(1); +} + +#define SHIFT(argc, argv) do { argc--; argv++; } while(0) +#define ARG_EQUALS(s, t) (strcmp(s, t) == 0) + +int main(int argc, const char* const* argv) { + // Parse command line flags. + string start = "2000"; + string until = "2050"; + SHIFT(argc, argv); + while (argc > 0) { + if (ARG_EQUALS(argv[0], "--scope")) { + SHIFT(argc, argv); + if (argc == 0) usageAndExit(); + scope = argv[0]; + } else if (ARG_EQUALS(argv[0], "--start_year")) { + SHIFT(argc, argv); + if (argc == 0) usageAndExit(); + start = argv[0]; + } else if (ARG_EQUALS(argv[0], "--until_year")) { + SHIFT(argc, argv); + if (argc == 0) usageAndExit(); + until = argv[0]; + } else if (ARG_EQUALS(argv[0], "--db_namespace")) { + SHIFT(argc, argv); + if (argc == 0) usageAndExit(); + dbNamespace = argv[0]; + } else if (ARG_EQUALS(argv[0], "--")) { + SHIFT(argc, argv); + break; + } else if (strncmp(argv[0], "-", 1) == 0) { + fprintf(stderr, "Unknonwn flag '%s'\n", argv[0]); + usageAndExit(); + } else { + break; + } + SHIFT(argc, argv); + } + if (scope != "basic" && scope != "extended") { + fprintf(stderr, "Unknown --scope '%s'\n", scope.c_str()); + usageAndExit(); + } + if (dbNamespace.empty()) { + fprintf(stderr, "Must give --db_namespace {db} flagn\n"); + usageAndExit(); + } + + startYear = atoi(start.c_str()); + untilYear = atoi(until.c_str()); + + // Process the zones on the STDIN vector zones = readZones(); map> testData = processZones(zones); sortTestData(testData); From 03041c5e18b90e0ceac58d9ffb857420a06e19a6 Mon Sep 17 00:00:00 2001 From: Brian Park Date: Mon, 12 Aug 2019 16:48:31 -0700 Subject: [PATCH 30/55] test_data_generator.cpp: Send output to validation_data.cpp --- .../test_data_generator.cpp | 26 ++++++++++++------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/tests/validation/BasicValidationUsingHinnantDateTest/test_data_generator.cpp b/tests/validation/BasicValidationUsingHinnantDateTest/test_data_generator.cpp index e700f58fc..d89cd5c3b 100644 --- a/tests/validation/BasicValidationUsingHinnantDateTest/test_data_generator.cpp +++ b/tests/validation/BasicValidationUsingHinnantDateTest/test_data_generator.cpp @@ -264,6 +264,17 @@ string normalizeName(const string& name) { return regex_replace(tmp, regex("[^0-9a-zA-Z]"), "_"); } +/** Sort the TestItems according to epochSeconds. */ +void sortTestData(map>& testData) { + for (auto& p : testData) { + sort(p.second.begin(), p.second.end(), + [](const TestItem& a, const TestItem& b) { + return a.epochSeconds < b.epochSeconds; + } + ); + } +} + void printTestItem(FILE* fp, const TestItem& item) { fprintf(fp, " { %10ld, %4d, %4d, %4d, %2u, %2u, %2d, %2d, %2d }, // type=%c\n", @@ -281,7 +292,8 @@ void printTestItem(FILE* fp, const TestItem& item) { /** Generate the validation_data.cpp file for timezone tz. */ void printDataCpp(const map>& testData) { - FILE* fp = stdout; + FILE* fp = fopen(VALIDATION_DATA_CPP, "w"); + fprintf(fp, "// This is an auto-generated file.\n"); fprintf(fp, "// DO NOT EDIT\n"); fprintf(fp, "\n"); @@ -327,17 +339,11 @@ void printDataCpp(const map>& testData) { } fprintf(fp, "}\n"); fprintf(fp, "}\n"); + + fclose(fp); } -/** Sort the TestItems according to epochSeconds. */ -void sortTestData(map>& testData) { - for (auto& p : testData) { - sort(p.second.begin(), p.second.end(), - [](const TestItem& a, const TestItem& b) { - return a.epochSeconds < b.epochSeconds; - } - ); - } +void printDataHeader(const map>& testData) { } void usageAndExit() { From 53e63e94c2d4ebb7bc50c4b3baabe8eeb88b89ea Mon Sep 17 00:00:00 2001 From: Brian Park Date: Mon, 12 Aug 2019 17:03:41 -0700 Subject: [PATCH 31/55] test_data_generator.cpp: Create validation_data.h file --- .../test_data_generator.cpp | 40 +++++++++++++++++-- 1 file changed, 37 insertions(+), 3 deletions(-) diff --git a/tests/validation/BasicValidationUsingHinnantDateTest/test_data_generator.cpp b/tests/validation/BasicValidationUsingHinnantDateTest/test_data_generator.cpp index d89cd5c3b..1dc04901c 100644 --- a/tests/validation/BasicValidationUsingHinnantDateTest/test_data_generator.cpp +++ b/tests/validation/BasicValidationUsingHinnantDateTest/test_data_generator.cpp @@ -298,12 +298,12 @@ void printDataCpp(const map>& testData) { fprintf(fp, "// DO NOT EDIT\n"); fprintf(fp, "\n"); fprintf(fp, "#include \n"); - fprintf(fp, "#include \"zonedb2018g/zone_infos.h\"\n"); - fprintf(fp, "#include \"zonedb2018g/zone_policies.h\"\n"); + fprintf(fp, "#include \"%s/zone_infos.h\"\n", dbNamespace.c_str()); + fprintf(fp, "#include \"%s/zone_policies.h\"\n", dbNamespace.c_str()); fprintf(fp, "#include \"validation_data.h\"\n"); fprintf(fp, "\n"); fprintf(fp, "namespace ace_time {\n"); - fprintf(fp, "namespace zonedb2018g {\n"); + fprintf(fp, "namespace %s {\n", dbNamespace.c_str()); fprintf(fp, "\n"); for (const auto& p : testData) { @@ -343,7 +343,37 @@ void printDataCpp(const map>& testData) { fclose(fp); } +/** Create validation_data.h file. */ void printDataHeader(const map>& testData) { + FILE* fp = fopen(VALIDATION_DATA_H, "w"); + + fprintf(fp, "// This is an auto-generated file.\n"); + fprintf(fp, "// DO NOT EDIT\n"); + fprintf(fp, "\n"); + fprintf(fp, "#ifndef ACE_TIME_VALIDATION_TEST_VALIDATION_DATA_H\n"); + fprintf(fp, "#define ACE_TIME_VALIDATION_TEST_VALIDATION_DATA_H\n"); + fprintf(fp, "\n"); + fprintf(fp, "#include \"ValidationDataType.h\"\n"); + fprintf(fp, "\n"); + fprintf(fp, "namespace ace_time {\n"); + fprintf(fp, "namespace %s {\n", dbNamespace.c_str()); + fprintf(fp, "\n"); + + for (const auto& p : testData) { + const auto zoneName = p.first; + const auto normalizedName = normalizeName(zoneName); + + fprintf(fp, "extern const ValidationData kValidationData%s;\n", + normalizedName.c_str()); + } + + fprintf(fp, "\n"); + fprintf(fp, "#endif\n"); + fprintf(fp, "\n"); + fprintf(fp, "}\n"); + fprintf(fp, "}\n"); + + fclose(fp); } void usageAndExit() { @@ -406,5 +436,9 @@ int main(int argc, const char* const* argv) { map> testData = processZones(zones); sortTestData(testData); printDataCpp(testData); + printDataHeader(testData); + + fprintf(stderr, "Created %s\n", VALIDATION_DATA_CPP); + fprintf(stderr, "Created %s\n", VALIDATION_DATA_H); return 0; } From 54b91ab128b16235b0f4644ec08e72f905f00ce6 Mon Sep 17 00:00:00 2001 From: Brian Park Date: Mon, 12 Aug 2019 17:21:33 -0700 Subject: [PATCH 32/55] test_data_generator.cpp: Create validation_tests.cpp file --- .../test_data_generator.cpp | 54 +++++++++++++++---- 1 file changed, 44 insertions(+), 10 deletions(-) diff --git a/tests/validation/BasicValidationUsingHinnantDateTest/test_data_generator.cpp b/tests/validation/BasicValidationUsingHinnantDateTest/test_data_generator.cpp index 1dc04901c..73b860a04 100644 --- a/tests/validation/BasicValidationUsingHinnantDateTest/test_data_generator.cpp +++ b/tests/validation/BasicValidationUsingHinnantDateTest/test_data_generator.cpp @@ -54,6 +54,7 @@ struct TestItem { // Command line arguments string scope = ""; string dbNamespace = ""; +bool isCustomDbNamespace; int startYear = 2000; int untilYear = 2050; @@ -294,12 +295,15 @@ void printTestItem(FILE* fp, const TestItem& item) { void printDataCpp(const map>& testData) { FILE* fp = fopen(VALIDATION_DATA_CPP, "w"); - fprintf(fp, "// This is an auto-generated file.\n"); + fprintf(fp, + "// This is an auto-generated file using the Hinnant Date Library.\n"); fprintf(fp, "// DO NOT EDIT\n"); fprintf(fp, "\n"); fprintf(fp, "#include \n"); - fprintf(fp, "#include \"%s/zone_infos.h\"\n", dbNamespace.c_str()); - fprintf(fp, "#include \"%s/zone_policies.h\"\n", dbNamespace.c_str()); + if (isCustomDbNamespace) { + fprintf(fp, "#include \"%s/zone_infos.h\"\n", dbNamespace.c_str()); + fprintf(fp, "#include \"%s/zone_policies.h\"\n", dbNamespace.c_str()); + } fprintf(fp, "#include \"validation_data.h\"\n"); fprintf(fp, "\n"); fprintf(fp, "namespace ace_time {\n"); @@ -307,9 +311,9 @@ void printDataCpp(const map>& testData) { fprintf(fp, "\n"); for (const auto& p : testData) { - const auto zoneName = p.first; - const auto normalizedName = normalizeName(zoneName); - const auto& testItems = p.second; + const string& zoneName = p.first; + const string normalizedName = normalizeName(zoneName); + const vector& testItems = p.second; fprintf(fp, "//--------------------------------------------------------------------\n"); @@ -347,7 +351,8 @@ void printDataCpp(const map>& testData) { void printDataHeader(const map>& testData) { FILE* fp = fopen(VALIDATION_DATA_H, "w"); - fprintf(fp, "// This is an auto-generated file.\n"); + fprintf(fp, + "// This is an auto-generated file using the Hinnant Date Library.\n"); fprintf(fp, "// DO NOT EDIT\n"); fprintf(fp, "\n"); fprintf(fp, "#ifndef ACE_TIME_VALIDATION_TEST_VALIDATION_DATA_H\n"); @@ -360,9 +365,8 @@ void printDataHeader(const map>& testData) { fprintf(fp, "\n"); for (const auto& p : testData) { - const auto zoneName = p.first; - const auto normalizedName = normalizeName(zoneName); - + const string& zoneName = p.first; + const string normalizedName = normalizeName(zoneName); fprintf(fp, "extern const ValidationData kValidationData%s;\n", normalizedName.c_str()); } @@ -376,6 +380,33 @@ void printDataHeader(const map>& testData) { fclose(fp); } +/** Create validation_tests.cpp file. */ +void printTestsCpp(const map>& testData) { + FILE* fp = fopen(VALIDATION_TESTS_CPP, "w"); + + fprintf(fp, + "// This is an auto-generated file using the Hinnant Date Library.\n"); + fprintf(fp, "// DO NOT EDIT\n"); + fprintf(fp, "\n"); + + fprintf(fp, "#include \n"); + fprintf(fp, "#include \"TransitionTest.h\"\n"); + fprintf(fp, "#include \"validation_data.h\"\n"); + fprintf(fp, "\n"); + + for (const auto& p : testData) { + const string& zoneName = p.first; + const string normalizedName = normalizeName(zoneName); + fprintf(fp, "testF(TransitionTest, %s) {\n", normalizedName.c_str()); + fprintf(fp, " assertValid(&ace_time::%s::kValidationData%s\n", + dbNamespace.c_str(), + normalizedName.c_str()); + fprintf(fp, "}\n"); + } + + fclose(fp); +} + void usageAndExit() { fprintf(stderr, "Usage: test_data_generator --scope (basic | extended) --db_namespace db\n" @@ -427,6 +458,7 @@ int main(int argc, const char* const* argv) { fprintf(stderr, "Must give --db_namespace {db} flagn\n"); usageAndExit(); } + isCustomDbNamespace = (dbNamespace != "zonedb" && dbNamespace != "zonedbx"); startYear = atoi(start.c_str()); untilYear = atoi(until.c_str()); @@ -437,8 +469,10 @@ int main(int argc, const char* const* argv) { sortTestData(testData); printDataCpp(testData); printDataHeader(testData); + printTestsCpp(testData); fprintf(stderr, "Created %s\n", VALIDATION_DATA_CPP); fprintf(stderr, "Created %s\n", VALIDATION_DATA_H); + fprintf(stderr, "Created %s\n", VALIDATION_TESTS_CPP); return 0; } From cca551156ab27bc049b6c1b32175db853e6189be Mon Sep 17 00:00:00 2001 From: Brian Park Date: Mon, 12 Aug 2019 17:22:55 -0700 Subject: [PATCH 33/55] test_data_generator.cpp: Update Makefile to write files directly instead of to STDOUT --- .../validation/BasicValidationUsingHinnantDateTest/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/validation/BasicValidationUsingHinnantDateTest/Makefile b/tests/validation/BasicValidationUsingHinnantDateTest/Makefile index 55f2c1967..28b57b74f 100644 --- a/tests/validation/BasicValidationUsingHinnantDateTest/Makefile +++ b/tests/validation/BasicValidationUsingHinnantDateTest/Makefile @@ -8,15 +8,15 @@ APP_NAME := BasicValidationUsingJavaTest ARDUINO_LIBS := AUnit AceTime include ../../../../UnixHostDuino/UnixHostDuino.mk -#.PHONY: $(GENERATED) +.PHONY: $(GENERATED) runtests: ./$(APP_NAME).out validation_data.cpp: zones.txt test_data_generator.out - ./test_data_generator.out --scope basic --db_namespace zonedb2018g \ + ./test_data_generator.out --scope basic --db_namespace zonedb \ --start_year 2000 --until_year 2050 \ - < zones.txt > $@ + < zones.txt zones.txt: ../../../tools/tzcompiler.sh --tag 2019a --scope basic --action zonedb \ From 317495835b235bad2cc967e3afaa5601ed49eede Mon Sep 17 00:00:00 2001 From: Brian Park Date: Mon, 12 Aug 2019 17:31:16 -0700 Subject: [PATCH 34/55] test_data_generator.cpp: Fix syntax errors in generated files --- .../BasicValidationUsingHinnantDateTest/Makefile | 2 +- .../test_data_generator.cpp | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/validation/BasicValidationUsingHinnantDateTest/Makefile b/tests/validation/BasicValidationUsingHinnantDateTest/Makefile index 28b57b74f..9025442c4 100644 --- a/tests/validation/BasicValidationUsingHinnantDateTest/Makefile +++ b/tests/validation/BasicValidationUsingHinnantDateTest/Makefile @@ -4,7 +4,7 @@ GENERATED := zones.txt validation_data.cpp validation_data.h \ validation_tests.cpp OBJS := validation_data.o validation_tests.o test_data_generator.o -APP_NAME := BasicValidationUsingJavaTest +APP_NAME := BasicValidationUsingHinnantDateTest ARDUINO_LIBS := AUnit AceTime include ../../../../UnixHostDuino/UnixHostDuino.mk diff --git a/tests/validation/BasicValidationUsingHinnantDateTest/test_data_generator.cpp b/tests/validation/BasicValidationUsingHinnantDateTest/test_data_generator.cpp index 73b860a04..49d9fbc9c 100644 --- a/tests/validation/BasicValidationUsingHinnantDateTest/test_data_generator.cpp +++ b/tests/validation/BasicValidationUsingHinnantDateTest/test_data_generator.cpp @@ -335,7 +335,7 @@ void printDataCpp(const map>& testData) { normalizedName.c_str()); fprintf(fp, " &kZone%s /*zoneInfo*/,\n", normalizedName.c_str()); fprintf(fp, - " sizeof(kValidationItems%s)/sizeof(ValidationItem) /*numItems*/\n", + " sizeof(kValidationItems%s)/sizeof(ValidationItem) /*numItems*/,\n", normalizedName.c_str()); fprintf(fp, " kValidationItems%s /*items*/,\n", normalizedName.c_str()); fprintf(fp, "};\n"); @@ -371,11 +371,11 @@ void printDataHeader(const map>& testData) { normalizedName.c_str()); } - fprintf(fp, "\n"); - fprintf(fp, "#endif\n"); fprintf(fp, "\n"); fprintf(fp, "}\n"); fprintf(fp, "}\n"); + fprintf(fp, "\n"); + fprintf(fp, "#endif\n"); fclose(fp); } @@ -398,7 +398,7 @@ void printTestsCpp(const map>& testData) { const string& zoneName = p.first; const string normalizedName = normalizeName(zoneName); fprintf(fp, "testF(TransitionTest, %s) {\n", normalizedName.c_str()); - fprintf(fp, " assertValid(&ace_time::%s::kValidationData%s\n", + fprintf(fp, " assertValid(&ace_time::%s::kValidationData%s);\n", dbNamespace.c_str(), normalizedName.c_str()); fprintf(fp, "}\n"); From 8145f9a837848f9c513341ac0b804b17371b07e6 Mon Sep 17 00:00:00 2001 From: Brian Park Date: Mon, 12 Aug 2019 17:41:08 -0700 Subject: [PATCH 35/55] tools/cpp: Move test_data_generator.cpp from BasicValidationUsingHinnantDateTest/ to tools/cpp --- .../BasicValidationUsingHinnantDateTest/Makefile | 13 ++++--------- tools/cpp/Makefile | 5 +++++ .../cpp}/test_data_generator.cpp | 0 3 files changed, 9 insertions(+), 9 deletions(-) create mode 100644 tools/cpp/Makefile rename {tests/validation/BasicValidationUsingHinnantDateTest => tools/cpp}/test_data_generator.cpp (100%) diff --git a/tests/validation/BasicValidationUsingHinnantDateTest/Makefile b/tests/validation/BasicValidationUsingHinnantDateTest/Makefile index 9025442c4..423facda6 100644 --- a/tests/validation/BasicValidationUsingHinnantDateTest/Makefile +++ b/tests/validation/BasicValidationUsingHinnantDateTest/Makefile @@ -3,7 +3,7 @@ GENERATED := zones.txt validation_data.cpp validation_data.h \ validation_tests.cpp -OBJS := validation_data.o validation_tests.o test_data_generator.o +OBJS := validation_data.o validation_tests.o APP_NAME := BasicValidationUsingHinnantDateTest ARDUINO_LIBS := AUnit AceTime include ../../../../UnixHostDuino/UnixHostDuino.mk @@ -13,17 +13,12 @@ include ../../../../UnixHostDuino/UnixHostDuino.mk runtests: ./$(APP_NAME).out -validation_data.cpp: zones.txt test_data_generator.out - ./test_data_generator.out --scope basic --db_namespace zonedb \ +validation_data.cpp: zones.txt + ../../../tools/cpp/test_data_generator.out --scope basic \ + --db_namespace zonedb \ --start_year 2000 --until_year 2050 \ < zones.txt zones.txt: ../../../tools/tzcompiler.sh --tag 2019a --scope basic --action zonedb \ --language java - -HINNANT_DATE_DIR := ../../../../date - -test_data_generator.out: test_data_generator.cpp - $(CXX) -I $(HINNANT_DATE_DIR)/include -Wall -std=gnu++11 -o $@ $^ \ - $(HINNANT_DATE_DIR)/src/*.cpp -lcurl diff --git a/tools/cpp/Makefile b/tools/cpp/Makefile new file mode 100644 index 000000000..26c033e47 --- /dev/null +++ b/tools/cpp/Makefile @@ -0,0 +1,5 @@ +HINNANT_DATE_DIR := ../../../date + +test_data_generator.out: test_data_generator.cpp + $(CXX) -I $(HINNANT_DATE_DIR)/include -Wall -std=gnu++11 -o $@ $^ \ + $(HINNANT_DATE_DIR)/src/*.cpp -lcurl diff --git a/tests/validation/BasicValidationUsingHinnantDateTest/test_data_generator.cpp b/tools/cpp/test_data_generator.cpp similarity index 100% rename from tests/validation/BasicValidationUsingHinnantDateTest/test_data_generator.cpp rename to tools/cpp/test_data_generator.cpp From a7c63107d2e52b97233fb7f0aab5982170e0a455 Mon Sep 17 00:00:00 2001 From: Brian Park Date: Mon, 12 Aug 2019 18:18:32 -0700 Subject: [PATCH 36/55] tools/cpp: Add --tz_version flag to control the TZ Dataase version --- tools/cpp/Makefile | 3 +- tools/cpp/test_data_generator.cpp | 48 ++++++++++++++++++++++++------- 2 files changed, 40 insertions(+), 11 deletions(-) diff --git a/tools/cpp/Makefile b/tools/cpp/Makefile index 26c033e47..5d45b06a1 100644 --- a/tools/cpp/Makefile +++ b/tools/cpp/Makefile @@ -1,5 +1,6 @@ HINNANT_DATE_DIR := ../../../date test_data_generator.out: test_data_generator.cpp - $(CXX) -I $(HINNANT_DATE_DIR)/include -Wall -std=gnu++11 -o $@ $^ \ + $(CXX) -DHAS_REMOTE_API=1 -DAUTO_DOWNLOAD=0 \ + -I $(HINNANT_DATE_DIR)/include -Wall -std=gnu++11 -o $@ $^ \ $(HINNANT_DATE_DIR)/src/*.cpp -lcurl diff --git a/tools/cpp/test_data_generator.cpp b/tools/cpp/test_data_generator.cpp index 49d9fbc9c..5c6b1a489 100644 --- a/tools/cpp/test_data_generator.cpp +++ b/tools/cpp/test_data_generator.cpp @@ -6,7 +6,8 @@ * Usage: * $ ./test_data_generator.out \ * --scope (basic | extended) \ - * --db_namespace (db) \ + * --db_namespace {db} \ + * --tz_version {version} \ * [--start_year start] \ * [--until_year until] < zones.txt */ @@ -22,13 +23,6 @@ using namespace date; using namespace std::chrono; using namespace std; -/** Difference between Unix epoch (1970-01-1) and AceTime Epoch (2000-01-01). */ -const long SECONDS_SINCE_UNIX_EPOCH = 946684800; - -const char VALIDATION_DATA_CPP[] = "validation_data.cpp"; -const char VALIDATION_DATA_H[] = "validation_data.h"; -const char VALIDATION_TESTS_CPP[] = "validation_tests.cpp"; - /** DateTime components. */ struct DateTime { int year; @@ -51,8 +45,18 @@ struct TestItem { char type; //'A', 'B', 'S', 'T' or 'Y' }; +/** Difference between Unix epoch (1970-01-1) and AceTime Epoch (2000-01-01). */ +const long SECONDS_SINCE_UNIX_EPOCH = 946684800; + +// Output files +const char VALIDATION_DATA_CPP[] = "validation_data.cpp"; +const char VALIDATION_DATA_H[] = "validation_data.h"; +const char VALIDATION_TESTS_CPP[] = "validation_tests.cpp"; + +// default TZ version +const char TZ_VERSION[] = "2019a"; + // Command line arguments -string scope = ""; string dbNamespace = ""; bool isCustomDbNamespace; int startYear = 2000; @@ -297,6 +301,7 @@ void printDataCpp(const map>& testData) { fprintf(fp, "// This is an auto-generated file using the Hinnant Date Library.\n"); + fprintf(fp, "// TZ Database version: %s\n", date::get_tzdb().version.c_str()); fprintf(fp, "// DO NOT EDIT\n"); fprintf(fp, "\n"); fprintf(fp, "#include \n"); @@ -353,6 +358,7 @@ void printDataHeader(const map>& testData) { fprintf(fp, "// This is an auto-generated file using the Hinnant Date Library.\n"); + fprintf(fp, "// TZ Database version: %s\n", date::get_tzdb().version.c_str()); fprintf(fp, "// DO NOT EDIT\n"); fprintf(fp, "\n"); fprintf(fp, "#ifndef ACE_TIME_VALIDATION_TEST_VALIDATION_DATA_H\n"); @@ -386,6 +392,7 @@ void printTestsCpp(const map>& testData) { fprintf(fp, "// This is an auto-generated file using the Hinnant Date Library.\n"); + fprintf(fp, "// TZ Database version: %s\n", date::get_tzdb().version.c_str()); fprintf(fp, "// DO NOT EDIT\n"); fprintf(fp, "\n"); @@ -410,7 +417,8 @@ void printTestsCpp(const map>& testData) { void usageAndExit() { fprintf(stderr, "Usage: test_data_generator --scope (basic | extended) --db_namespace db\n" - " [--start_year start] [--until_year until] < zones.txt\n"); + " [--tz_version {version}] [--start_year start] [--until_year until] \n" + " < zones.txt\n"); exit(1); } @@ -419,8 +427,11 @@ void usageAndExit() { int main(int argc, const char* const* argv) { // Parse command line flags. + string scope = ""; string start = "2000"; string until = "2050"; + string tzVersion = TZ_VERSION; + SHIFT(argc, argv); while (argc > 0) { if (ARG_EQUALS(argv[0], "--scope")) { @@ -439,6 +450,10 @@ int main(int argc, const char* const* argv) { SHIFT(argc, argv); if (argc == 0) usageAndExit(); dbNamespace = argv[0]; + } else if (ARG_EQUALS(argv[0], "--tz_version")) { + SHIFT(argc, argv); + if (argc == 0) usageAndExit(); + tzVersion = argv[0]; } else if (ARG_EQUALS(argv[0], "--")) { SHIFT(argc, argv); break; @@ -450,6 +465,7 @@ int main(int argc, const char* const* argv) { } SHIFT(argc, argv); } + // TODO: Use the scope to select the default dbNamespace if not given. if (scope != "basic" && scope != "extended") { fprintf(stderr, "Unknown --scope '%s'\n", scope.c_str()); usageAndExit(); @@ -463,6 +479,18 @@ int main(int argc, const char* const* argv) { startYear = atoi(start.c_str()); untilYear = atoi(until.c_str()); + // Load the TZ Database at a specific version + if (! remote_download(tzVersion)) { + fprintf(stderr, "Failed to download TZ Version %s\n", tzVersion.c_str()); + exit(1); + } + if (! remote_install(tzVersion)) { + fprintf(stderr, "Failed to install TZ Version %s\n", tzVersion.c_str()); + exit(1); + } + reload_tzdb(); + fprintf(stderr, "Loaded TZ Version %s\n", tzVersion.c_str()); + // Process the zones on the STDIN vector zones = readZones(); map> testData = processZones(zones); From cb69d1c0fb322ae02311dd9835e099aeeb1ca421 Mon Sep 17 00:00:00 2001 From: Brian Park Date: Mon, 12 Aug 2019 18:30:04 -0700 Subject: [PATCH 37/55] tests/validation: Create ExtendedValidationUsingHinnantDateTest/; update various README.md --- .../BasicValidationUsingHinnantDateTest.ino | 12 ++--- .../README.md | 16 ------ ...ExtendedValidationUsingHinnantDateTest.ino | 27 ++++++++++ .../Makefile | 24 +++++++++ .../README.md | 31 +++++++++++ .../TransitionTest.h | 53 +++++++++++++++++++ .../ValidationDataType.h | 31 +++++++++++ 7 files changed, 169 insertions(+), 25 deletions(-) create mode 100644 tests/validation/ExtendedValidationUsingHinnantDateTest/ExtendedValidationUsingHinnantDateTest.ino create mode 100644 tests/validation/ExtendedValidationUsingHinnantDateTest/Makefile create mode 100644 tests/validation/ExtendedValidationUsingHinnantDateTest/README.md create mode 100644 tests/validation/ExtendedValidationUsingHinnantDateTest/TransitionTest.h create mode 100644 tests/validation/ExtendedValidationUsingHinnantDateTest/ValidationDataType.h diff --git a/tests/validation/BasicValidationUsingHinnantDateTest/BasicValidationUsingHinnantDateTest.ino b/tests/validation/BasicValidationUsingHinnantDateTest/BasicValidationUsingHinnantDateTest.ino index 0d9b5b2ea..8d7057f97 100644 --- a/tests/validation/BasicValidationUsingHinnantDateTest/BasicValidationUsingHinnantDateTest.ino +++ b/tests/validation/BasicValidationUsingHinnantDateTest/BasicValidationUsingHinnantDateTest.ino @@ -1,4 +1,4 @@ -#line 2 "BasicValidationUsingJavaTest.ino" +#line 2 "BasicValidationUsingHinnantDateTest.ino" /* * This unit test depends on 'validation_data.cpp' which is so large that it @@ -16,16 +16,10 @@ using namespace ace_time; void setup() { #if defined(ARDUINO) - delay(1000); // wait for stability on some boards to prevent garbage SERIAL_PORT_MONITOR + delay(1000); // wait to prevent garbage on SERIAL_PORT_MONITOR #endif - SERIAL_PORT_MONITOR.begin(115200); // ESP8266 default of 74880 not supported on Linux + SERIAL_PORT_MONITOR.begin(115200); while(!SERIAL_PORT_MONITOR); // for the Arduino Leonardo/Micro only - -#if 0 - TestRunner::exclude("*"); - //TestRunner::include("TransitionTest", "America_Los_Angeles"); - TestRunner::include("TransitionTest", "America_Moncton"); -#endif } void loop() { diff --git a/tests/validation/BasicValidationUsingHinnantDateTest/README.md b/tests/validation/BasicValidationUsingHinnantDateTest/README.md index 04babab40..22be60d7b 100644 --- a/tests/validation/BasicValidationUsingHinnantDateTest/README.md +++ b/tests/validation/BasicValidationUsingHinnantDateTest/README.md @@ -20,22 +20,6 @@ TestRunner duration: 0.070 seconds. TestRunner summary: 268 passed, 0 failed, 0 skipped, 0 timed out, out of 268 test(s). ``` -## Regenerating the Zoneinfo Data - -The TZ Database version used by the `TestDataGenerator.java` program and the -version that generated the `zonedb` files must match for this unit test to -succeed. The JDK version used to run this test was `openjdk version "11.0.3" -2019-04-16` (see `java -version`) which seems to use version 2018g. The default -zoneinfo files in `src/ace_time/zonedb` are generated using the latest TZ -version (currently 2019a). Since these don't match, it was necessary to create a -custom `zonedb` database in `./zonedb2018g/` directory. - -The `zonedb2018g` files can be regenerated using: -``` -$ cd zonedb2018g -$ make -``` - ## Compiling the HinnantDate Test Data Generator The `Makefile` assumes that you have already compiled the diff --git a/tests/validation/ExtendedValidationUsingHinnantDateTest/ExtendedValidationUsingHinnantDateTest.ino b/tests/validation/ExtendedValidationUsingHinnantDateTest/ExtendedValidationUsingHinnantDateTest.ino new file mode 100644 index 000000000..a69102d14 --- /dev/null +++ b/tests/validation/ExtendedValidationUsingHinnantDateTest/ExtendedValidationUsingHinnantDateTest.ino @@ -0,0 +1,27 @@ +#line 2 "ExtendedValidationUsingHinnantDateTest.ino" + +/* + * This unit test depends on 'validation_data.cpp' which is so large that it + * will likely not compile on an Arduino environment. It can however be run on + * a Linux or MacOS environment using the provided Makefile. + */ + +#include +#include + +using namespace aunit; +using namespace ace_time; + +// -------------------------------------------------------------------------- + +void setup() { +#if defined(ARDUINO) + delay(1000); // wait to prevent garbage on SERIAL_PORT_MONITOR +#endif + SERIAL_PORT_MONITOR.begin(115200); + while(!SERIAL_PORT_MONITOR); // for the Arduino Leonardo/Micro only +} + +void loop() { + TestRunner::run(); +} diff --git a/tests/validation/ExtendedValidationUsingHinnantDateTest/Makefile b/tests/validation/ExtendedValidationUsingHinnantDateTest/Makefile new file mode 100644 index 000000000..764ab4130 --- /dev/null +++ b/tests/validation/ExtendedValidationUsingHinnantDateTest/Makefile @@ -0,0 +1,24 @@ +# See https://github.com/bxparks/UnixHostDuino for documentation about this +# Makefile to compile and run Arduino programs natively on Linux or MacOS. + +GENERATED := zones.txt validation_data.cpp validation_data.h \ + validation_tests.cpp +OBJS := validation_data.o validation_tests.o +APP_NAME := ExtendedValidationUsingHinnantDateTest +ARDUINO_LIBS := AUnit AceTime +include ../../../../UnixHostDuino/UnixHostDuino.mk + +.PHONY: $(GENERATED) + +runtests: + ./$(APP_NAME).out + +validation_data.cpp: zones.txt + ../../../tools/cpp/test_data_generator.out --scope extended \ + --db_namespace zonedbx \ + --start_year 2000 --until_year 2050 \ + < zones.txt + +zones.txt: + ../../../tools/tzcompiler.sh --tag 2019a --scope extended --action zonedb \ + --language java diff --git a/tests/validation/ExtendedValidationUsingHinnantDateTest/README.md b/tests/validation/ExtendedValidationUsingHinnantDateTest/README.md new file mode 100644 index 000000000..c8b58fcda --- /dev/null +++ b/tests/validation/ExtendedValidationUsingHinnantDateTest/README.md @@ -0,0 +1,31 @@ +# ExtendedValidationUsingHinnantDateTest + +This unit test compares the DST transitions calculated by the +`BasicZoneProcessor` class (which uses the `zonedb` data files) with the +`validation_data.cpp` file generated by the +`../../tools/cpp/test_data_generator` program which uses the [Hinnant Date +Library](https://github.com/HowardHinnant/date). + +## Running the Test + +Assuming that you have `g++` and `make` installed, just type: +``` +$ make clean && make -j 4 +$ ./BasicValidationUsingHinnantDateTest.out +TestRunner started on 268 test(s). +Test TransitionTest_Africa_Abidjan passed. +... +Test TransitionTest_Pacific_Wallis passed. +TestRunner duration: 0.070 seconds. +TestRunner summary: 268 passed, 0 failed, 0 skipped, 0 timed out, out of 268 test(s). +``` + +## Compiling the HinnantDate Test Data Generator + +The `Makefile` assumes that you have already compiled the +`../../../tools/cpp/test_data_generator.out` program. Type the following: + +``` +$ cd ../../../tools/cpp +$ make +``` diff --git a/tests/validation/ExtendedValidationUsingHinnantDateTest/TransitionTest.h b/tests/validation/ExtendedValidationUsingHinnantDateTest/TransitionTest.h new file mode 100644 index 000000000..1a23dfebf --- /dev/null +++ b/tests/validation/ExtendedValidationUsingHinnantDateTest/TransitionTest.h @@ -0,0 +1,53 @@ +#ifndef VALIDATION_TEST_TRANSITION_TEST_H +#define VALIDATION_TEST_TRANSITION_TEST_H + +#include +#include "ValidationDataType.h" +#include "ace_time/common/logging.h" + +#define DEBUG 0 + +class TransitionTest: public aunit::TestOnce { + protected: + void assertValid(const ValidationData* testData) { + if (DEBUG) { + enableVerbosity(aunit::Verbosity::kAssertionPassed); + } + assertTrue(true); + + const extended::ZoneInfo* zoneInfo = testData->zoneInfo; + ExtendedZoneProcessor zoneProcessor; + TimeZone tz = TimeZone::forZoneInfo(zoneInfo, &zoneProcessor); + for (uint16_t i = 0; i < testData->numItems; i++) { + const ValidationItem& item = testData->items[i]; + acetime_t epochSeconds = item.epochSeconds; + + TimeOffset timeOffset = tz.getUtcOffset(epochSeconds); + if (DEBUG) { + ace_time::logging::printf("==== test index: %d\n", i); + if (sizeof(acetime_t) == sizeof(int)) { + ace_time::logging::printf("epochSeconds: %d\n", epochSeconds); + } else { + ace_time::logging::printf("epochSeconds: %ld\n", epochSeconds); + } + zoneProcessor.log(); + } + + // Verify timeOffset + assertEqual(item.timeOffsetMinutes, timeOffset.toMinutes()); + + // Verify date components + ZonedDateTime dt = ZonedDateTime::forEpochSeconds(epochSeconds, tz); + assertEqual(item.year, dt.year()); + assertEqual(item.month, dt.month()); + assertEqual(item.day, dt.day()); + assertEqual(item.hour, dt.hour()); + assertEqual(item.minute, dt.minute()); + assertEqual(item.second, dt.second()); + } + } +}; + +#undef DEBUG + +#endif diff --git a/tests/validation/ExtendedValidationUsingHinnantDateTest/ValidationDataType.h b/tests/validation/ExtendedValidationUsingHinnantDateTest/ValidationDataType.h new file mode 100644 index 000000000..3ec41d10e --- /dev/null +++ b/tests/validation/ExtendedValidationUsingHinnantDateTest/ValidationDataType.h @@ -0,0 +1,31 @@ +#ifndef VALIDATION_DATA_TYPE_H +#define VALIDATION_DATA_TYPE_H + +#include + +using namespace ace_time; + +/** The epochSecond and the expected UTC offset and dateTime components. */ +struct ValidationItem { + acetime_t const epochSeconds; + int16_t const timeOffsetMinutes; + int16_t const deltaOffsetMinutes; + int16_t const year; + uint8_t const month; + uint8_t const day; + uint8_t const hour; + uint8_t const minute; + uint8_t const second; +}; + +/** + * Header that points to an array of all ValidationItems and the specific + * extended::ZoneInfo that is being tested. + */ +struct ValidationData { + const extended::ZoneInfo* const zoneInfo; + uint16_t const numItems; + const ValidationItem* const items; +}; + +#endif From 427155e590bf7afa6271aafbf3627f5e7ba028c2 Mon Sep 17 00:00:00 2001 From: Brian Park Date: Mon, 12 Aug 2019 18:33:30 -0700 Subject: [PATCH 38/55] tools/cpp: Add URL to documentation on how to reload the tz database of the Hinnant date library --- tools/cpp/test_data_generator.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tools/cpp/test_data_generator.cpp b/tools/cpp/test_data_generator.cpp index 5c6b1a489..e8cf751da 100644 --- a/tools/cpp/test_data_generator.cpp +++ b/tools/cpp/test_data_generator.cpp @@ -479,7 +479,9 @@ int main(int argc, const char* const* argv) { startYear = atoi(start.c_str()); untilYear = atoi(until.c_str()); - // Load the TZ Database at a specific version + // Load the TZ Database at a specific version. See + // https://github.com/HowardHinnant/date/wiki/Examples-and-Recipes#thoughts-on-reloading-the-iana-tzdb-for-long-running-programs + // and https://howardhinnant.github.io/date/tz.html#database. if (! remote_download(tzVersion)) { fprintf(stderr, "Failed to download TZ Version %s\n", tzVersion.c_str()); exit(1); From cdabf98a4e4649653139da0de6b6c52e7940a148 Mon Sep 17 00:00:00 2001 From: Brian Park Date: Mon, 12 Aug 2019 18:53:08 -0700 Subject: [PATCH 39/55] tools/cpp: Add README.md for test_data_generator.cpp --- tests/validation/README.md | 17 ++++++++++------- tools/cpp/README.md | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 7 deletions(-) create mode 100644 tools/cpp/README.md diff --git a/tests/validation/README.md b/tests/validation/README.md index 01f60c979..0d032313a 100644 --- a/tests/validation/README.md +++ b/tests/validation/README.md @@ -1,10 +1,11 @@ # Validation Tests These tests compare the algorithm implemented by `ZonedDateTime` and -`ZoneProcessor` classes with the equivalent functionalty from the Python -[pytz](https://pypi.org/project/pytz/) library and the [Java 11 -Time](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/time/package-summary.html) -library. +`ZoneProcessor` classes with the equivalent functionalty from 3 +other libraries: +* Python [pytz](https://pypi.org/project/pytz/) library +* [Java 11 Time](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/time/package-summary.html) library. +* [Hinnant date](https://github.com/HowardHinnant/date) C++ library These unit tests require a desktop-class machine running Linux or MacOS. They are too big to run on any Arduino microcontroller that I know of. They use the @@ -19,9 +20,11 @@ these tests, it did not seem worth checking in the generated code.) Prerequite: -1. You need to compile the -[TestDataGenerator.java](../../tools/java/TestDataGenerator.java) program: - * `$ (cd ../../tools/java; make)` +1. You need to compile a number of tools in `$ACE_TIME_DIR/tools`: + * [TestDataGenerator.java](../../tools/java/TestDataGenerator.java) program: + * `$ (cd ../../tools/java; make)` + * [test_data_generator.cpp](../../tools/cpp/test_data_generator.cpp) program + * `$ (cd ../../tools/cpp; make) 1. Install [UnixHostDuino](https://github.com/bxparks/UnixHostDuino) as a sibling project to AceTime if you have not already done so: * `$ (cd ../../..; git clone https://github.com/bxparks/UnixHostDuino)` diff --git a/tools/cpp/README.md b/tools/cpp/README.md new file mode 100644 index 000000000..5a6cd7af5 --- /dev/null +++ b/tools/cpp/README.md @@ -0,0 +1,32 @@ +# Test Data Generator using Hinnant Date Library + +The `test_data_generator.cpp` program generates the `validation_data.cpp`, +`validation_data.h` and `validation_tests.cpp` files needed by: + + * `tests/validation/BasicValidationUsingHinnantDateTest/` + * `tests/validation/ExtendedValidationUsingHinnantDateTest/` + +The program reads the `zones.txt` file (generated by the `tzcompiler.py` +program) which contains the list of zones supported by zoneinfo files in +`src/ace_time/zonedb/` and `src/ace_time/zonedbx`. The program then generates a +test data set of all DST transitions, the epoch seconds, and the expected +date/time components using the [Hinnant +Date](https://github.com/HowardHinnant/date) C++11/14/17 library. + +## Compiling + +I have tested this only on Ubuntu 18.04. Install the following: + +* CMake + * `$ sudo apt install cmake` +* libcurl library + * `$ sudo apt install libcurl4-openssl-dev` +* [Hinnant Date](https://github.com/HowardHinnant/date) library as a + **sibling** to AceTime + * `$ cd $ACE_TIME_DIR/..` + * `$ git clone https://github.com/HowardHinnant/date` + +Then type make to generate `test_data_generator.out`: +``` +$ make +``` From 29b35c59efd55266280b0e09ab9c6a24937b458c Mon Sep 17 00:00:00 2001 From: Brian Park Date: Mon, 12 Aug 2019 18:57:09 -0700 Subject: [PATCH 40/55] tests/JenkinsfileUnixHost: Add support for Hinnant date library validation using test_data_generator --- tests/JenkinsfileUnixHost | 21 +++++---------------- 1 file changed, 5 insertions(+), 16 deletions(-) diff --git a/tests/JenkinsfileUnixHost b/tests/JenkinsfileUnixHost index e0bd81889..16903afd2 100644 --- a/tests/JenkinsfileUnixHost +++ b/tests/JenkinsfileUnixHost @@ -34,12 +34,17 @@ pipeline { git url: 'https://github.com/eggert/tz', branch: 'master' } + dir('libraries/date') { + git url: 'https://github.com/HowardHinnant/date', + branch: 'master' + } } } stage('Verify Tests') { steps { sh "make -C libraries/AceTime/tests tests" sh "make -C libraries/AceTime/tools/java" + sh "make -C libraries/AceTime/tools/cpp" sh "make -C libraries/AceTime/tests/validation tests" } } @@ -55,21 +60,5 @@ pipeline { sh "make -C libraries/AceTime/tests clean" sh "make -C libraries/AceTime/tests/validation clean" } - failure { - script { - if (env.BADGE_BUCKET?.trim()) { - sh "AUniter/BadgeService/set-badge-status.sh \ - $BADGE_BUCKET AceTime FAILED" - } - } - } - success { - script { - if (env.BADGE_BUCKET?.trim()) { - sh "AUniter/BadgeService/set-badge-status.sh \ - $BADGE_BUCKET AceTime PASSED" - } - } - } } } From 29bd1006f7d5799e6c17cd0dd290e8f21f465774 Mon Sep 17 00:00:00 2001 From: Brian Park Date: Mon, 12 Aug 2019 20:31:23 -0700 Subject: [PATCH 41/55] USER_GUIDE.md: Expand comparisons to Hinnant Date libraries for C++11/14/17 --- USER_GUIDE.md | 85 ++++++++++++++++++++++++++++++++------------------- 1 file changed, 54 insertions(+), 31 deletions(-) diff --git a/USER_GUIDE.md b/USER_GUIDE.md index 706f9e6ce..1fce11d44 100644 --- a/USER_GUIDE.md +++ b/USER_GUIDE.md @@ -2359,17 +2359,18 @@ classes (more details at [examples/AutoBenchmark](examples/AutoBenchmark): sizeof(LocalDate): 3 sizeof(LocalTime): 3 sizeof(LocalDateTime): 6 -sizeof(TimeOffset): 1 -sizeof(OffsetDateTime): 7 +sizeof(TimeOffset): 2 +sizeof(OffsetDateTime): 8 sizeof(BasicZoneProcessor): 99 -sizeof(ExtendedZoneProcessor): 397 -sizeof(TimeZone): 3 -sizeof(ZonedDateTime): 10 +sizeof(ExtendedZoneProcessor): 437 +sizeof(BasicZoneManager<1>): 107 +sizeof(ExtendedZoneManager<1>): 445 +sizeof(TimeZone): 5 +sizeof(ZonedDateTime): 13 sizeof(TimePeriod): 4 -sizeof(SystemClock): 17 sizeof(DS3231Clock): 3 -sizeof(SystemClockLoop): 14 -sizeof(SystemClockCoroutine): 31 +sizeof(SystemClockLoop): 34 +sizeof(SystemClockCoroutine): 44 ``` **32-bit processors** @@ -2377,17 +2378,18 @@ sizeof(SystemClockCoroutine): 31 sizeof(LocalDate): 3 sizeof(LocalTime): 3 sizeof(LocalDateTime): 6 -sizeof(TimeOffset): 1 -sizeof(OffsetDateTime): 7 +sizeof(TimeOffset): 2 +sizeof(OffsetDateTime): 8 sizeof(BasicZoneProcessor): 136 -sizeof(ExtendedZoneProcessor): 468 -sizeof(TimeZone): 8 -sizeof(ZonedDateTime): 16 +sizeof(ExtendedZoneProcessor): 500 +sizeof(BasicZoneManager<1>): 156 +sizeof(ExtendedZoneManager<1>): 520 +sizeof(TimeZone): 12 +sizeof(ZonedDateTime): 20 sizeof(TimePeriod): 4 -sizeof(SystemClock): 24 sizeof(NtpClock): 88 (ESP8266), 116 (ESP32) -sizeof(SystemClockLoop): 16 -sizeof(SystemClockCoroutine): 48 +sizeof(SystemClockLoop): 44 +sizeof(SystemClockCoroutine): 68 ``` The [MemoryBenchmark](examples/MemoryBenchmark) program gives a more @@ -2502,25 +2504,46 @@ provides other fine-grained classes such as `OffsetTime`, `OffsetDate`, `Year`, providing too many classes. The API of the library is already too large, I did not want to make them larger than necessary. -### HowardHinnant Libraries - -A number of C++ libraries from Howard Hinnant are based the `` standard -library: - -* [date](http://howardhinnant.github.io/date/date.html) -* [tz](http://howardhinnant.github.io/date/tz.html) -* [iso_week](http://howardhinnant.github.io/date/iso_week.html) -* [julian](http://howardhinnant.github.io/date/julian.html) -* [islamic](http://howardhinnant.github.io/date/islamic.html) - -To be honest, I have not looked very closely at these libraries, mostly because -of my suspicion that they are too large to fit into an Arduino microcontroller. +### HowardHinnant Date Library + +The [date](https://github.com/HowardHinnant/date) package by Howard Hinnant is +based upon the `` standard library and consists of several libraries of +which `date.h` and `tz.h` are comparable to AceTime. Modified versions of these +libraries were voted into the C++20 standard. + +Unfortunately these libaries are not suitable for an Arduino microcontroller +environment because: + +* The libraries depend extensively on 64-bit integers which are + impractical on 8-bit microcontrollers with only 32kB of flash memory. +* The `tz.h` library has the option of downloading the TZ Database files over + the network using `libcurl` to the OS filesystem then parsing the files, or + using the native zoneinfo files on the host OS. Neither options are practical + on small microcontrollers. The raw TZ Database files consume about 1MB in + gzip'ed format, which are not suitable for a 32kB Arduino microcontroller. +* The libraries has dependencies on other libraries such as `` and + `` which don't exist on most Arduino platforms. +* The libraries are heavily templatized to provide maximum flexibility + and type-safety. But this makes the libraries incredibly hard to understand + and cumbersome to use for the simple use cases targeted by the AceTime + library. + +The Hinnant date libraries were invaluable for writing the +[BasicValidationUsingHinnantDateTest](tests/validation/BasicValidationUsingHinnantDateTest/) +and +[ExtendedValidationUsingHinnantDateTest](tests/validation/ExtendedValidationUsingHinnantDateTest/) +validation tests (in v0.7) which are the AceTime algorithms to the Hinnant Date +algorithms. For all times zones between the years 2000 until 2050, the AceTime +UTC offsets (`TimeZone::getUtcOffset()`) and epochSecond conversion to +date components (`ZonedDateTime::fromEpochSeconds()`) match the results from the +Hinannt Date libraries perfectly. ### Google cctz The [cctz](https://github.com/google/cctz) library from Google is also based on -the `` library. Again, I did not look at this library closely because I -did not think it would fit inside an Arduino controller. +the `` library. I have not looked at this library closely because I +assumed that it would fit inside an Arduino controller. Hopefully I will get +some time to take a closer look in the future. ## Bugs and Limitations From e2b54df90f0469b4eabbe3dbe272c9fa8c8a8b25 Mon Sep 17 00:00:00 2001 From: Brian Park Date: Mon, 12 Aug 2019 21:39:54 -0700 Subject: [PATCH 42/55] tools/cpp: Make --tz_version a required flag; make --db_namespace optional, inferring it from --scope --- src/ace_time/BasicZoneProcessor.h | 16 ++++++------ .../Makefile | 8 +++--- .../Makefile | 8 +++--- tools/cpp/test_data_generator.cpp | 26 +++++++++++-------- 4 files changed, 33 insertions(+), 25 deletions(-) diff --git a/src/ace_time/BasicZoneProcessor.h b/src/ace_time/BasicZoneProcessor.h index fbd0d4dea..62cd7686d 100644 --- a/src/ace_time/BasicZoneProcessor.h +++ b/src/ace_time/BasicZoneProcessor.h @@ -166,15 +166,15 @@ struct MonthDay { * defined by zonedb/zone_infos.h. The constraints are at least the following * (see tools/transformer.py for the authoratative algorithm): * - * - ZoneInfo UNTIL field must contain only the full year; + * * ZoneInfo UNTIL field must contain only the full year; * cannot contain month, day, or time components - * - ZoneInfo untilTimeModifier can contain only 'w' (not 's' or 'u') - * - ZoneInfo RULES column must be empty ("-"), OR refer to a + * * ZoneInfo untilTimeModifier can contain only 'w' (not 's' or 'u') + * * ZoneInfo RULES column must be empty ("-"), OR refer to a * named Zone Rule (e.g. "US"); cannot contain an explicit offset (hh:mm) - * - ZonePolicy can contain only 1 ZoneRule in a single month - * - ZoneRule AT time cannot occur on Jan 1 - * - ZoneRule atTimeModifier can be any of ('w', 's', and 'u') - * - ZoneRule LETTER must contain only a single letter (not "WAT" or "CST") + * * ZonePolicy can contain only 1 ZoneRule in a single month + * * ZoneRule AT time cannot occur on Jan 1 + * * ZoneRule atTimeModifier can be any of ('w', 's', and 'u') + * * ZoneRule LETTER must contain only a single letter (not "WAT" or "CST") * * Even with these limitations, zonedb/zone_info.h shows that 231 out of a * total of 359 zones are supported by BasicZoneProcessor. @@ -785,7 +785,7 @@ class BasicZoneProcessor: public ZoneProcessor { * replacement letter (e.g. 'S', 'D', or '-'). * * 1) If the RULES column (transition->rule) is empty '-', then FORMAT - * cannot contain a '/' or a '%' because the ZoneEra specifies only a + * cannot contain a '%' because the ZoneEra specifies only a * single transition rule. (Verified in transformer.py). This condition is * indicated by (deltaCode == 0) and (letter == '\0'). * diff --git a/tests/validation/BasicValidationUsingHinnantDateTest/Makefile b/tests/validation/BasicValidationUsingHinnantDateTest/Makefile index 423facda6..c54d06f17 100644 --- a/tests/validation/BasicValidationUsingHinnantDateTest/Makefile +++ b/tests/validation/BasicValidationUsingHinnantDateTest/Makefile @@ -13,12 +13,14 @@ include ../../../../UnixHostDuino/UnixHostDuino.mk runtests: ./$(APP_NAME).out +TZ_VERSION=2019a + validation_data.cpp: zones.txt ../../../tools/cpp/test_data_generator.out --scope basic \ - --db_namespace zonedb \ + --tz_version $(TZ_VERSION) \ --start_year 2000 --until_year 2050 \ < zones.txt zones.txt: - ../../../tools/tzcompiler.sh --tag 2019a --scope basic --action zonedb \ - --language java + ../../../tools/tzcompiler.sh --tag $(TZ_VERSION) --scope basic \ + --action zonedb --language java diff --git a/tests/validation/ExtendedValidationUsingHinnantDateTest/Makefile b/tests/validation/ExtendedValidationUsingHinnantDateTest/Makefile index 764ab4130..72f86bcb3 100644 --- a/tests/validation/ExtendedValidationUsingHinnantDateTest/Makefile +++ b/tests/validation/ExtendedValidationUsingHinnantDateTest/Makefile @@ -13,12 +13,14 @@ include ../../../../UnixHostDuino/UnixHostDuino.mk runtests: ./$(APP_NAME).out +TZ_VERSION=2019a + validation_data.cpp: zones.txt ../../../tools/cpp/test_data_generator.out --scope extended \ - --db_namespace zonedbx \ + --tz_version $(TZ_VERSION) \ --start_year 2000 --until_year 2050 \ < zones.txt zones.txt: - ../../../tools/tzcompiler.sh --tag 2019a --scope extended --action zonedb \ - --language java + ../../../tools/tzcompiler.sh --tag $(TZ_VERSION) --scope extended \ + --action zonedb --language java diff --git a/tools/cpp/test_data_generator.cpp b/tools/cpp/test_data_generator.cpp index e8cf751da..232025acf 100644 --- a/tools/cpp/test_data_generator.cpp +++ b/tools/cpp/test_data_generator.cpp @@ -6,8 +6,8 @@ * Usage: * $ ./test_data_generator.out \ * --scope (basic | extended) \ - * --db_namespace {db} \ * --tz_version {version} \ + * [--db_namespace {db}] \ * [--start_year start] \ * [--until_year until] < zones.txt */ @@ -53,9 +53,6 @@ const char VALIDATION_DATA_CPP[] = "validation_data.cpp"; const char VALIDATION_DATA_H[] = "validation_data.h"; const char VALIDATION_TESTS_CPP[] = "validation_tests.cpp"; -// default TZ version -const char TZ_VERSION[] = "2019a"; - // Command line arguments string dbNamespace = ""; bool isCustomDbNamespace; @@ -416,9 +413,10 @@ void printTestsCpp(const map>& testData) { void usageAndExit() { fprintf(stderr, - "Usage: test_data_generator --scope (basic | extended) --db_namespace db\n" - " [--tz_version {version}] [--start_year start] [--until_year until] \n" - " < zones.txt\n"); + "Usage: test_data_generator --scope (basic | extended)\n" + " --tz_version {version} [--db_namespace db]\n" + " [--start_year start] [--until_year until]\n" + " < zones.txt\n"); exit(1); } @@ -430,7 +428,7 @@ int main(int argc, const char* const* argv) { string scope = ""; string start = "2000"; string until = "2050"; - string tzVersion = TZ_VERSION; + string tzVersion = ""; SHIFT(argc, argv); while (argc > 0) { @@ -465,15 +463,21 @@ int main(int argc, const char* const* argv) { } SHIFT(argc, argv); } - // TODO: Use the scope to select the default dbNamespace if not given. if (scope != "basic" && scope != "extended") { fprintf(stderr, "Unknown --scope '%s'\n", scope.c_str()); usageAndExit(); } - if (dbNamespace.empty()) { - fprintf(stderr, "Must give --db_namespace {db} flagn\n"); + if (tzVersion.empty()) { + fprintf(stderr, "Must give --tz_version flag'\n"); usageAndExit(); } + if (dbNamespace.empty()) { + if (scope == "basic") { + dbNamespace = "zonedb"; + } else { + dbNamespace = "zonedbx"; + } + } isCustomDbNamespace = (dbNamespace != "zonedb" && dbNamespace != "zonedbx"); startYear = atoi(start.c_str()); From 3de5f437b2535b3a466dfdd3bf0b6678ca478e66 Mon Sep 17 00:00:00 2001 From: Brian Park Date: Tue, 13 Aug 2019 07:59:25 -0700 Subject: [PATCH 43/55] zonedb, tests: Update to TZ Database 2019b (#6) --- src/ace_time/zonedb/Makefile | 4 +++- src/ace_time/zonedbx/Makefile | 4 +++- .../BasicValidationUsingHinnantDateTest.ino | 2 -- tests/validation/BasicValidationUsingHinnantDateTest/Makefile | 2 +- .../ExtendedValidationUsingHinnantDateTest.ino | 2 -- .../ExtendedValidationUsingHinnantDateTest/Makefile | 2 +- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/ace_time/zonedb/Makefile b/src/ace_time/zonedb/Makefile index c25b8c98f..f11b29f5f 100644 --- a/src/ace_time/zonedb/Makefile +++ b/src/ace_time/zonedb/Makefile @@ -1,4 +1,6 @@ TARGETS := zone_infos.cpp zone_infos.h zone_policies.cpp zone_policies.h all: - ../../../tools/tzcompiler.sh --tag 2019a --action zonedb --language arduino --scope basic --start_year 2000 --until_year 2050 + ../../../tools/tzcompiler.sh --tag 2019b --action zonedb \ + --language arduino --scope basic --start_year 2000 \ + --until_year 2050 diff --git a/src/ace_time/zonedbx/Makefile b/src/ace_time/zonedbx/Makefile index 9c111ad3d..3823046be 100644 --- a/src/ace_time/zonedbx/Makefile +++ b/src/ace_time/zonedbx/Makefile @@ -1,4 +1,6 @@ TARGETS := zone_infos.cpp zone_infos.h zone_policies.cpp zone_policies.h all: - ../../../tools/tzcompiler.sh --tag 2019a --action zonedb --language arduino --scope extended --start_year 2000 --until_year 2050 + ../../../tools/tzcompiler.sh --tag 2019b --action zonedb \ + --language arduino --scope extended --start_year 2000 \ + --until_year 2050 diff --git a/tests/validation/BasicValidationUsingHinnantDateTest/BasicValidationUsingHinnantDateTest.ino b/tests/validation/BasicValidationUsingHinnantDateTest/BasicValidationUsingHinnantDateTest.ino index 8d7057f97..6d1ffa0f4 100644 --- a/tests/validation/BasicValidationUsingHinnantDateTest/BasicValidationUsingHinnantDateTest.ino +++ b/tests/validation/BasicValidationUsingHinnantDateTest/BasicValidationUsingHinnantDateTest.ino @@ -12,8 +12,6 @@ using namespace aunit; using namespace ace_time; -// -------------------------------------------------------------------------- - void setup() { #if defined(ARDUINO) delay(1000); // wait to prevent garbage on SERIAL_PORT_MONITOR diff --git a/tests/validation/BasicValidationUsingHinnantDateTest/Makefile b/tests/validation/BasicValidationUsingHinnantDateTest/Makefile index c54d06f17..e5711437d 100644 --- a/tests/validation/BasicValidationUsingHinnantDateTest/Makefile +++ b/tests/validation/BasicValidationUsingHinnantDateTest/Makefile @@ -13,7 +13,7 @@ include ../../../../UnixHostDuino/UnixHostDuino.mk runtests: ./$(APP_NAME).out -TZ_VERSION=2019a +TZ_VERSION=2019b validation_data.cpp: zones.txt ../../../tools/cpp/test_data_generator.out --scope basic \ diff --git a/tests/validation/ExtendedValidationUsingHinnantDateTest/ExtendedValidationUsingHinnantDateTest.ino b/tests/validation/ExtendedValidationUsingHinnantDateTest/ExtendedValidationUsingHinnantDateTest.ino index a69102d14..73e0c653f 100644 --- a/tests/validation/ExtendedValidationUsingHinnantDateTest/ExtendedValidationUsingHinnantDateTest.ino +++ b/tests/validation/ExtendedValidationUsingHinnantDateTest/ExtendedValidationUsingHinnantDateTest.ino @@ -12,8 +12,6 @@ using namespace aunit; using namespace ace_time; -// -------------------------------------------------------------------------- - void setup() { #if defined(ARDUINO) delay(1000); // wait to prevent garbage on SERIAL_PORT_MONITOR diff --git a/tests/validation/ExtendedValidationUsingHinnantDateTest/Makefile b/tests/validation/ExtendedValidationUsingHinnantDateTest/Makefile index 72f86bcb3..f25853c5a 100644 --- a/tests/validation/ExtendedValidationUsingHinnantDateTest/Makefile +++ b/tests/validation/ExtendedValidationUsingHinnantDateTest/Makefile @@ -13,7 +13,7 @@ include ../../../../UnixHostDuino/UnixHostDuino.mk runtests: ./$(APP_NAME).out -TZ_VERSION=2019a +TZ_VERSION=2019b validation_data.cpp: zones.txt ../../../tools/cpp/test_data_generator.out --scope extended \ From 9fcc08babf1029faa76955a1808235c466cdbd21 Mon Sep 17 00:00:00 2001 From: Brian Park Date: Tue, 13 Aug 2019 08:07:27 -0700 Subject: [PATCH 44/55] zonedb: Update zoneinfo files for 2019b (#6) --- src/ace_time/zonedb/zone_infos.cpp | 6 +- src/ace_time/zonedb/zone_infos.h | 4 +- src/ace_time/zonedb/zone_policies.cpp | 180 ++------- src/ace_time/zonedb/zone_policies.h | 4 +- src/ace_time/zonedb/zone_registry.cpp | 4 +- src/ace_time/zonedb/zone_registry.h | 4 +- src/ace_time/zonedbx/zone_infos.cpp | 6 +- src/ace_time/zonedbx/zone_infos.h | 4 +- src/ace_time/zonedbx/zone_policies.cpp | 536 +++++++++++++++++-------- src/ace_time/zonedbx/zone_policies.h | 4 +- src/ace_time/zonedbx/zone_registry.cpp | 4 +- src/ace_time/zonedbx/zone_registry.h | 4 +- 12 files changed, 416 insertions(+), 344 deletions(-) diff --git a/src/ace_time/zonedb/zone_infos.cpp b/src/ace_time/zonedb/zone_infos.cpp index 327efa9ae..740e16167 100644 --- a/src/ace_time/zonedb/zone_infos.cpp +++ b/src/ace_time/zonedb/zone_infos.cpp @@ -1,9 +1,9 @@ // This file was generated by the following script: // -// $ ../../../tools/tzcompiler.py --input_dir ../../../tools/../../tz --output_dir /home/brian/dev/AceTime/src/ace_time/zonedb --tz_version 2019a --action zonedb --language arduino --scope basic --start_year 2000 --until_year 2050 +// $ ../../../tools/tzcompiler.py --input_dir ../../../tools/../../tz --output_dir /home/brian/dev/AceTime/src/ace_time/zonedb --tz_version 2019b --action zonedb --language arduino --scope basic --start_year 2000 --until_year 2050 // // using the TZ Database files from -// https://github.com/eggert/tz/releases/tag/2019a +// https://github.com/eggert/tz/releases/tag/2019b // // Zones: 270 // Links: 182 @@ -24,7 +24,7 @@ namespace zonedb { // ZoneContext (should not be in PROGMEM) //--------------------------------------------------------------------------- -const char kTzDatabaseVersion[] = "2019a"; +const char kTzDatabaseVersion[] = "2019b"; const basic::ZoneContext kZoneContext = { 2000 /*startYear*/, diff --git a/src/ace_time/zonedb/zone_infos.h b/src/ace_time/zonedb/zone_infos.h index 47ec33081..436dd8003 100644 --- a/src/ace_time/zonedb/zone_infos.h +++ b/src/ace_time/zonedb/zone_infos.h @@ -1,12 +1,12 @@ // This file was generated by the following script: // -// $ ../../../tools/tzcompiler.py --input_dir ../../../tools/../../tz --output_dir /home/brian/dev/AceTime/src/ace_time/zonedb --tz_version 2019a --action zonedb --language arduino --scope basic --start_year 2000 --until_year 2050 +// $ ../../../tools/tzcompiler.py --input_dir ../../../tools/../../tz --output_dir /home/brian/dev/AceTime/src/ace_time/zonedb --tz_version 2019b --action zonedb --language arduino --scope basic --start_year 2000 --until_year 2050 // // using the TZ Database files // // africa, antarctica, asia, australasia, backward, etcetera, europe, northamerica, southamerica // -// from https://github.com/eggert/tz/releases/tag/2019a +// from https://github.com/eggert/tz/releases/tag/2019b // // DO NOT EDIT diff --git a/src/ace_time/zonedb/zone_policies.cpp b/src/ace_time/zonedb/zone_policies.cpp index cf9c4a8d1..180311858 100644 --- a/src/ace_time/zonedb/zone_policies.cpp +++ b/src/ace_time/zonedb/zone_policies.cpp @@ -1,14 +1,14 @@ // This file was generated by the following script: // -// $ ../../../tools/tzcompiler.py --input_dir ../../../tools/../../tz --output_dir /home/brian/dev/AceTime/src/ace_time/zonedb --tz_version 2019a --action zonedb --language arduino --scope basic --start_year 2000 --until_year 2050 +// $ ../../../tools/tzcompiler.py --input_dir ../../../tools/../../tz --output_dir /home/brian/dev/AceTime/src/ace_time/zonedb --tz_version 2019b --action zonedb --language arduino --scope basic --start_year 2000 --until_year 2050 // // using the TZ Database files from -// https://github.com/eggert/tz/releases/tag/2019a +// https://github.com/eggert/tz/releases/tag/2019b // // Policies: 65 -// Rules: 370 -// Memory (8-bit): 3720 -// Memory (32-bit): 5252 +// Rules: 359 +// Memory (8-bit): 3621 +// Memory (32-bit): 5120 // // DO NOT EDIT @@ -760,9 +760,9 @@ const basic::ZonePolicy kPolicyBarb ACE_TIME_PROGMEM = { //--------------------------------------------------------------------------- // Policy name: Brazil -// Rules: 28 -// Memory (8-bit): 258 -// Memory (32-bit): 348 +// Rules: 20 +// Memory (8-bit): 186 +// Memory (32-bit): 252 //--------------------------------------------------------------------------- static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { @@ -982,10 +982,10 @@ static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 0 /*deltaCode*/, '-' /*letter*/, }, - // Rule Brazil 2016 2022 - Feb Sun>=15 0:00 0 - + // Rule Brazil 2016 2019 - Feb Sun>=15 0:00 0 - { 16 /*fromYearTiny*/, - 22 /*toYearTiny*/, + 19 /*toYearTiny*/, 2 /*inMonth*/, 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, @@ -994,10 +994,10 @@ static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 0 /*deltaCode*/, '-' /*letter*/, }, - // Rule Brazil 2018 max - Nov Sun>=1 0:00 1:00 - + // Rule Brazil 2018 only - Nov Sun>=1 0:00 1:00 - { 18 /*fromYearTiny*/, - 126 /*toYearTiny*/, + 18 /*toYearTiny*/, 11 /*inMonth*/, 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, @@ -1006,102 +1006,6 @@ static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 4 /*deltaCode*/, '-' /*letter*/, }, - // Rule Brazil 2023 only - Feb Sun>=22 0:00 0 - - { - 23 /*fromYearTiny*/, - 23 /*toYearTiny*/, - 2 /*inMonth*/, - 7 /*onDayOfWeek*/, - 22 /*onDayOfMonth*/, - 0 /*atTimeCode*/, - basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, - 0 /*deltaCode*/, - '-' /*letter*/, - }, - // Rule Brazil 2024 2025 - Feb Sun>=15 0:00 0 - - { - 24 /*fromYearTiny*/, - 25 /*toYearTiny*/, - 2 /*inMonth*/, - 7 /*onDayOfWeek*/, - 15 /*onDayOfMonth*/, - 0 /*atTimeCode*/, - basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, - 0 /*deltaCode*/, - '-' /*letter*/, - }, - // Rule Brazil 2026 only - Feb Sun>=22 0:00 0 - - { - 26 /*fromYearTiny*/, - 26 /*toYearTiny*/, - 2 /*inMonth*/, - 7 /*onDayOfWeek*/, - 22 /*onDayOfMonth*/, - 0 /*atTimeCode*/, - basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, - 0 /*deltaCode*/, - '-' /*letter*/, - }, - // Rule Brazil 2027 2033 - Feb Sun>=15 0:00 0 - - { - 27 /*fromYearTiny*/, - 33 /*toYearTiny*/, - 2 /*inMonth*/, - 7 /*onDayOfWeek*/, - 15 /*onDayOfMonth*/, - 0 /*atTimeCode*/, - basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, - 0 /*deltaCode*/, - '-' /*letter*/, - }, - // Rule Brazil 2034 only - Feb Sun>=22 0:00 0 - - { - 34 /*fromYearTiny*/, - 34 /*toYearTiny*/, - 2 /*inMonth*/, - 7 /*onDayOfWeek*/, - 22 /*onDayOfMonth*/, - 0 /*atTimeCode*/, - basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, - 0 /*deltaCode*/, - '-' /*letter*/, - }, - // Rule Brazil 2035 2036 - Feb Sun>=15 0:00 0 - - { - 35 /*fromYearTiny*/, - 36 /*toYearTiny*/, - 2 /*inMonth*/, - 7 /*onDayOfWeek*/, - 15 /*onDayOfMonth*/, - 0 /*atTimeCode*/, - basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, - 0 /*deltaCode*/, - '-' /*letter*/, - }, - // Rule Brazil 2037 only - Feb Sun>=22 0:00 0 - - { - 37 /*fromYearTiny*/, - 37 /*toYearTiny*/, - 2 /*inMonth*/, - 7 /*onDayOfWeek*/, - 22 /*onDayOfMonth*/, - 0 /*atTimeCode*/, - basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, - 0 /*deltaCode*/, - '-' /*letter*/, - }, - // Rule Brazil 2038 max - Feb Sun>=15 0:00 0 - - { - 38 /*fromYearTiny*/, - 126 /*toYearTiny*/, - 2 /*inMonth*/, - 7 /*onDayOfWeek*/, - 15 /*onDayOfMonth*/, - 0 /*atTimeCode*/, - basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, - 0 /*deltaCode*/, - '-' /*letter*/, - }, }; @@ -1110,7 +1014,7 @@ static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { const basic::ZonePolicy kPolicyBrazil ACE_TIME_PROGMEM = { kZoneRulesBrazil /*rules*/, nullptr /* letters */, - 28 /*numRules*/, + 20 /*numRules*/, 0 /* numLetters */, }; @@ -2306,13 +2210,13 @@ const basic::ZonePolicy kPolicyGuat ACE_TIME_PROGMEM = { //--------------------------------------------------------------------------- static const basic::ZoneRule kZoneRulesHK[] ACE_TIME_PROGMEM = { - // Rule HK 1979 only - Oct Sun>=16 3:30 0 - + // Rule HK 1979 only - Oct 21 3:30 0 - { -21 /*fromYearTiny*/, -21 /*toYearTiny*/, 10 /*inMonth*/, - 7 /*onDayOfWeek*/, - 16 /*onDayOfMonth*/, + 0 /*onDayOfWeek*/, + 21 /*onDayOfMonth*/, 14 /*atTimeCode*/, basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, @@ -5416,9 +5320,9 @@ const basic::ZonePolicy kPolicyWinn ACE_TIME_PROGMEM = { //--------------------------------------------------------------------------- // Policy name: Zion -// Rules: 27 -// Memory (8-bit): 249 -// Memory (32-bit): 336 +// Rules: 24 +// Memory (8-bit): 222 +// Memory (32-bit): 300 //--------------------------------------------------------------------------- static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { @@ -5578,13 +5482,13 @@ static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*deltaCode*/, 'S' /*letter*/, }, - // Rule Zion 2005 only - Apr 1 2:00 1:00 D + // Rule Zion 2005 2012 - Apr Fri<=1 2:00 1:00 D { 5 /*fromYearTiny*/, - 5 /*toYearTiny*/, + 12 /*toYearTiny*/, 4 /*inMonth*/, - 0 /*onDayOfWeek*/, - 1 /*onDayOfMonth*/, + 5 /*onDayOfWeek*/, + -1 /*onDayOfMonth*/, 8 /*atTimeCode*/, basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, @@ -5602,18 +5506,6 @@ static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*deltaCode*/, 'S' /*letter*/, }, - // Rule Zion 2006 2010 - Mar Fri>=26 2:00 1:00 D - { - 6 /*fromYearTiny*/, - 10 /*toYearTiny*/, - 3 /*inMonth*/, - 5 /*onDayOfWeek*/, - 26 /*onDayOfMonth*/, - 8 /*atTimeCode*/, - basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, - 4 /*deltaCode*/, - 'D' /*letter*/, - }, // Rule Zion 2006 only - Oct 1 2:00 0 S { 6 /*fromYearTiny*/, @@ -5674,18 +5566,6 @@ static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*deltaCode*/, 'S' /*letter*/, }, - // Rule Zion 2011 only - Apr 1 2:00 1:00 D - { - 11 /*fromYearTiny*/, - 11 /*toYearTiny*/, - 4 /*inMonth*/, - 0 /*onDayOfWeek*/, - 1 /*onDayOfMonth*/, - 8 /*atTimeCode*/, - basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, - 4 /*deltaCode*/, - 'D' /*letter*/, - }, // Rule Zion 2011 only - Oct 2 2:00 0 S { 11 /*fromYearTiny*/, @@ -5698,18 +5578,6 @@ static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*deltaCode*/, 'S' /*letter*/, }, - // Rule Zion 2012 only - Mar Fri>=26 2:00 1:00 D - { - 12 /*fromYearTiny*/, - 12 /*toYearTiny*/, - 3 /*inMonth*/, - 5 /*onDayOfWeek*/, - 26 /*onDayOfMonth*/, - 8 /*atTimeCode*/, - basic::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, - 4 /*deltaCode*/, - 'D' /*letter*/, - }, // Rule Zion 2012 only - Sep 23 2:00 0 S { 12 /*fromYearTiny*/, @@ -5754,7 +5622,7 @@ static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { const basic::ZonePolicy kPolicyZion ACE_TIME_PROGMEM = { kZoneRulesZion /*rules*/, nullptr /* letters */, - 27 /*numRules*/, + 24 /*numRules*/, 0 /* numLetters */, }; diff --git a/src/ace_time/zonedb/zone_policies.h b/src/ace_time/zonedb/zone_policies.h index 77664fa9d..72e83cd91 100644 --- a/src/ace_time/zonedb/zone_policies.h +++ b/src/ace_time/zonedb/zone_policies.h @@ -1,12 +1,12 @@ // This file was generated by the following script: // -// $ ../../../tools/tzcompiler.py --input_dir ../../../tools/../../tz --output_dir /home/brian/dev/AceTime/src/ace_time/zonedb --tz_version 2019a --action zonedb --language arduino --scope basic --start_year 2000 --until_year 2050 +// $ ../../../tools/tzcompiler.py --input_dir ../../../tools/../../tz --output_dir /home/brian/dev/AceTime/src/ace_time/zonedb --tz_version 2019b --action zonedb --language arduino --scope basic --start_year 2000 --until_year 2050 // // using the TZ Database files // // africa, antarctica, asia, australasia, backward, etcetera, europe, northamerica, southamerica // -// from https://github.com/eggert/tz/releases/tag/2019a +// from https://github.com/eggert/tz/releases/tag/2019b // // DO NOT EDIT diff --git a/src/ace_time/zonedb/zone_registry.cpp b/src/ace_time/zonedb/zone_registry.cpp index b6695e6a7..7f35b4c5d 100644 --- a/src/ace_time/zonedb/zone_registry.cpp +++ b/src/ace_time/zonedb/zone_registry.cpp @@ -1,9 +1,9 @@ // This file was generated by the following script: // -// $ ../../../tools/tzcompiler.py --input_dir ../../../tools/../../tz --output_dir /home/brian/dev/AceTime/src/ace_time/zonedb --tz_version 2019a --action zonedb --language arduino --scope basic --start_year 2000 --until_year 2050 +// $ ../../../tools/tzcompiler.py --input_dir ../../../tools/../../tz --output_dir /home/brian/dev/AceTime/src/ace_time/zonedb --tz_version 2019b --action zonedb --language arduino --scope basic --start_year 2000 --until_year 2050 // // using the TZ Database files from -// https://github.com/eggert/tz/releases/tag/2019a +// https://github.com/eggert/tz/releases/tag/2019b // // DO NOT EDIT diff --git a/src/ace_time/zonedb/zone_registry.h b/src/ace_time/zonedb/zone_registry.h index d1e92b5a5..03fc675ee 100644 --- a/src/ace_time/zonedb/zone_registry.h +++ b/src/ace_time/zonedb/zone_registry.h @@ -1,9 +1,9 @@ // This file was generated by the following script: // -// $ ../../../tools/tzcompiler.py --input_dir ../../../tools/../../tz --output_dir /home/brian/dev/AceTime/src/ace_time/zonedb --tz_version 2019a --action zonedb --language arduino --scope basic --start_year 2000 --until_year 2050 +// $ ../../../tools/tzcompiler.py --input_dir ../../../tools/../../tz --output_dir /home/brian/dev/AceTime/src/ace_time/zonedb --tz_version 2019b --action zonedb --language arduino --scope basic --start_year 2000 --until_year 2050 // // using the TZ Database files from -// https://github.com/eggert/tz/releases/tag/2019a +// https://github.com/eggert/tz/releases/tag/2019b // // DO NOT EDIT diff --git a/src/ace_time/zonedbx/zone_infos.cpp b/src/ace_time/zonedbx/zone_infos.cpp index 9ca5ad3c4..dd0c00d64 100644 --- a/src/ace_time/zonedbx/zone_infos.cpp +++ b/src/ace_time/zonedbx/zone_infos.cpp @@ -1,9 +1,9 @@ // This file was generated by the following script: // -// $ ../../../tools/tzcompiler.py --input_dir ../../../tools/../../tz --output_dir /home/brian/dev/AceTime/src/ace_time/zonedbx --tz_version 2019a --action zonedb --language arduino --scope extended --start_year 2000 --until_year 2050 +// $ ../../../tools/tzcompiler.py --input_dir ../../../tools/../../tz --output_dir /home/brian/dev/AceTime/src/ace_time/zonedbx --tz_version 2019b --action zonedb --language arduino --scope extended --start_year 2000 --until_year 2050 // // using the TZ Database files from -// https://github.com/eggert/tz/releases/tag/2019a +// https://github.com/eggert/tz/releases/tag/2019b // // Zones: 387 // Links: 205 @@ -24,7 +24,7 @@ namespace zonedbx { // ZoneContext (should not be in PROGMEM) //--------------------------------------------------------------------------- -const char kTzDatabaseVersion[] = "2019a"; +const char kTzDatabaseVersion[] = "2019b"; const extended::ZoneContext kZoneContext = { 2000 /*startYear*/, diff --git a/src/ace_time/zonedbx/zone_infos.h b/src/ace_time/zonedbx/zone_infos.h index 763f51a43..ff8300acc 100644 --- a/src/ace_time/zonedbx/zone_infos.h +++ b/src/ace_time/zonedbx/zone_infos.h @@ -1,12 +1,12 @@ // This file was generated by the following script: // -// $ ../../../tools/tzcompiler.py --input_dir ../../../tools/../../tz --output_dir /home/brian/dev/AceTime/src/ace_time/zonedbx --tz_version 2019a --action zonedb --language arduino --scope extended --start_year 2000 --until_year 2050 +// $ ../../../tools/tzcompiler.py --input_dir ../../../tools/../../tz --output_dir /home/brian/dev/AceTime/src/ace_time/zonedbx --tz_version 2019b --action zonedb --language arduino --scope extended --start_year 2000 --until_year 2050 // // using the TZ Database files // // africa, antarctica, asia, australasia, backward, etcetera, europe, northamerica, southamerica // -// from https://github.com/eggert/tz/releases/tag/2019a +// from https://github.com/eggert/tz/releases/tag/2019b // // DO NOT EDIT diff --git a/src/ace_time/zonedbx/zone_policies.cpp b/src/ace_time/zonedbx/zone_policies.cpp index e43a07a0b..d234dde64 100644 --- a/src/ace_time/zonedbx/zone_policies.cpp +++ b/src/ace_time/zonedbx/zone_policies.cpp @@ -1,14 +1,14 @@ // This file was generated by the following script: // -// $ ../../../tools/tzcompiler.py --input_dir ../../../tools/../../tz --output_dir /home/brian/dev/AceTime/src/ace_time/zonedbx --tz_version 2019a --action zonedb --language arduino --scope extended --start_year 2000 --until_year 2050 +// $ ../../../tools/tzcompiler.py --input_dir ../../../tools/../../tz --output_dir /home/brian/dev/AceTime/src/ace_time/zonedbx --tz_version 2019b --action zonedb --language arduino --scope extended --start_year 2000 --until_year 2050 // // using the TZ Database files from -// https://github.com/eggert/tz/releases/tag/2019a +// https://github.com/eggert/tz/releases/tag/2019b // // Policies: 84 -// Rules: 527 -// Memory (8-bit): 5282 -// Memory (32-bit): 7411 +// Rules: 544 +// Memory (8-bit): 5435 +// Memory (32-bit): 7615 // // DO NOT EDIT @@ -888,9 +888,9 @@ const extended::ZonePolicy kPolicyBelize ACE_TIME_PROGMEM = { //--------------------------------------------------------------------------- // Policy name: Brazil -// Rules: 28 -// Memory (8-bit): 258 -// Memory (32-bit): 348 +// Rules: 20 +// Memory (8-bit): 186 +// Memory (32-bit): 252 //--------------------------------------------------------------------------- static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { @@ -1110,10 +1110,10 @@ static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 0 /*deltaCode*/, '-' /*letter*/, }, - // Rule Brazil 2016 2022 - Feb Sun>=15 0:00 0 - + // Rule Brazil 2016 2019 - Feb Sun>=15 0:00 0 - { 16 /*fromYearTiny*/, - 22 /*toYearTiny*/, + 19 /*toYearTiny*/, 2 /*inMonth*/, 7 /*onDayOfWeek*/, 15 /*onDayOfMonth*/, @@ -1122,10 +1122,10 @@ static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 0 /*deltaCode*/, '-' /*letter*/, }, - // Rule Brazil 2018 max - Nov Sun>=1 0:00 1:00 - + // Rule Brazil 2018 only - Nov Sun>=1 0:00 1:00 - { 18 /*fromYearTiny*/, - 126 /*toYearTiny*/, + 18 /*toYearTiny*/, 11 /*inMonth*/, 7 /*onDayOfWeek*/, 1 /*onDayOfMonth*/, @@ -1134,102 +1134,6 @@ static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { 4 /*deltaCode*/, '-' /*letter*/, }, - // Rule Brazil 2023 only - Feb Sun>=22 0:00 0 - - { - 23 /*fromYearTiny*/, - 23 /*toYearTiny*/, - 2 /*inMonth*/, - 7 /*onDayOfWeek*/, - 22 /*onDayOfMonth*/, - 0 /*atTimeCode*/, - extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, - 0 /*deltaCode*/, - '-' /*letter*/, - }, - // Rule Brazil 2024 2025 - Feb Sun>=15 0:00 0 - - { - 24 /*fromYearTiny*/, - 25 /*toYearTiny*/, - 2 /*inMonth*/, - 7 /*onDayOfWeek*/, - 15 /*onDayOfMonth*/, - 0 /*atTimeCode*/, - extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, - 0 /*deltaCode*/, - '-' /*letter*/, - }, - // Rule Brazil 2026 only - Feb Sun>=22 0:00 0 - - { - 26 /*fromYearTiny*/, - 26 /*toYearTiny*/, - 2 /*inMonth*/, - 7 /*onDayOfWeek*/, - 22 /*onDayOfMonth*/, - 0 /*atTimeCode*/, - extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, - 0 /*deltaCode*/, - '-' /*letter*/, - }, - // Rule Brazil 2027 2033 - Feb Sun>=15 0:00 0 - - { - 27 /*fromYearTiny*/, - 33 /*toYearTiny*/, - 2 /*inMonth*/, - 7 /*onDayOfWeek*/, - 15 /*onDayOfMonth*/, - 0 /*atTimeCode*/, - extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, - 0 /*deltaCode*/, - '-' /*letter*/, - }, - // Rule Brazil 2034 only - Feb Sun>=22 0:00 0 - - { - 34 /*fromYearTiny*/, - 34 /*toYearTiny*/, - 2 /*inMonth*/, - 7 /*onDayOfWeek*/, - 22 /*onDayOfMonth*/, - 0 /*atTimeCode*/, - extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, - 0 /*deltaCode*/, - '-' /*letter*/, - }, - // Rule Brazil 2035 2036 - Feb Sun>=15 0:00 0 - - { - 35 /*fromYearTiny*/, - 36 /*toYearTiny*/, - 2 /*inMonth*/, - 7 /*onDayOfWeek*/, - 15 /*onDayOfMonth*/, - 0 /*atTimeCode*/, - extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, - 0 /*deltaCode*/, - '-' /*letter*/, - }, - // Rule Brazil 2037 only - Feb Sun>=22 0:00 0 - - { - 37 /*fromYearTiny*/, - 37 /*toYearTiny*/, - 2 /*inMonth*/, - 7 /*onDayOfWeek*/, - 22 /*onDayOfMonth*/, - 0 /*atTimeCode*/, - extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, - 0 /*deltaCode*/, - '-' /*letter*/, - }, - // Rule Brazil 2038 max - Feb Sun>=15 0:00 0 - - { - 38 /*fromYearTiny*/, - 126 /*toYearTiny*/, - 2 /*inMonth*/, - 7 /*onDayOfWeek*/, - 15 /*onDayOfMonth*/, - 0 /*atTimeCode*/, - extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, - 0 /*deltaCode*/, - '-' /*letter*/, - }, }; @@ -1238,7 +1142,7 @@ static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = { const extended::ZonePolicy kPolicyBrazil ACE_TIME_PROGMEM = { kZoneRulesBrazil /*rules*/, nullptr /* letters */, - 28 /*numRules*/, + 20 /*numRules*/, 0 /* numLetters */, }; @@ -2790,13 +2694,13 @@ const extended::ZonePolicy kPolicyGuat ACE_TIME_PROGMEM = { //--------------------------------------------------------------------------- static const extended::ZoneRule kZoneRulesHK[] ACE_TIME_PROGMEM = { - // Rule HK 1979 only - Oct Sun>=16 3:30 0 - + // Rule HK 1979 only - Oct 21 3:30 0 - { -21 /*fromYearTiny*/, -21 /*toYearTiny*/, 10 /*inMonth*/, - 7 /*onDayOfWeek*/, - 16 /*onDayOfMonth*/, + 0 /*onDayOfWeek*/, + 21 /*onDayOfMonth*/, 14 /*atTimeCode*/, extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 0 /*deltaCode*/, @@ -4620,9 +4524,9 @@ const extended::ZonePolicy kPolicyMongol ACE_TIME_PROGMEM = { //--------------------------------------------------------------------------- // Policy name: Morocco -// Rules: 67 -// Memory (8-bit): 609 -// Memory (32-bit): 816 +// Rules: 94 +// Memory (8-bit): 852 +// Memory (32-bit): 1140 //--------------------------------------------------------------------------- static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { @@ -5430,6 +5334,330 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { 0 /*deltaCode*/, '-' /*letter*/, }, + // Rule Morocco 2038 only - Sep 26 3:00 -1:00 - + { + 38 /*fromYearTiny*/, + 38 /*toYearTiny*/, + 9 /*inMonth*/, + 0 /*onDayOfWeek*/, + 26 /*onDayOfMonth*/, + 12 /*atTimeCode*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, + -4 /*deltaCode*/, + '-' /*letter*/, + }, + // Rule Morocco 2038 only - Oct 31 2:00 0 - + { + 38 /*fromYearTiny*/, + 38 /*toYearTiny*/, + 10 /*inMonth*/, + 0 /*onDayOfWeek*/, + 31 /*onDayOfMonth*/, + 8 /*atTimeCode*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, + 0 /*deltaCode*/, + '-' /*letter*/, + }, + // Rule Morocco 2039 only - Sep 18 3:00 -1:00 - + { + 39 /*fromYearTiny*/, + 39 /*toYearTiny*/, + 9 /*inMonth*/, + 0 /*onDayOfWeek*/, + 18 /*onDayOfMonth*/, + 12 /*atTimeCode*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, + -4 /*deltaCode*/, + '-' /*letter*/, + }, + // Rule Morocco 2039 only - Oct 23 2:00 0 - + { + 39 /*fromYearTiny*/, + 39 /*toYearTiny*/, + 10 /*inMonth*/, + 0 /*onDayOfWeek*/, + 23 /*onDayOfMonth*/, + 8 /*atTimeCode*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, + 0 /*deltaCode*/, + '-' /*letter*/, + }, + // Rule Morocco 2040 only - Sep 2 3:00 -1:00 - + { + 40 /*fromYearTiny*/, + 40 /*toYearTiny*/, + 9 /*inMonth*/, + 0 /*onDayOfWeek*/, + 2 /*onDayOfMonth*/, + 12 /*atTimeCode*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, + -4 /*deltaCode*/, + '-' /*letter*/, + }, + // Rule Morocco 2040 only - Oct 14 2:00 0 - + { + 40 /*fromYearTiny*/, + 40 /*toYearTiny*/, + 10 /*inMonth*/, + 0 /*onDayOfWeek*/, + 14 /*onDayOfMonth*/, + 8 /*atTimeCode*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, + 0 /*deltaCode*/, + '-' /*letter*/, + }, + // Rule Morocco 2041 only - Aug 25 3:00 -1:00 - + { + 41 /*fromYearTiny*/, + 41 /*toYearTiny*/, + 8 /*inMonth*/, + 0 /*onDayOfWeek*/, + 25 /*onDayOfMonth*/, + 12 /*atTimeCode*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, + -4 /*deltaCode*/, + '-' /*letter*/, + }, + // Rule Morocco 2041 only - Sep 29 2:00 0 - + { + 41 /*fromYearTiny*/, + 41 /*toYearTiny*/, + 9 /*inMonth*/, + 0 /*onDayOfWeek*/, + 29 /*onDayOfMonth*/, + 8 /*atTimeCode*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, + 0 /*deltaCode*/, + '-' /*letter*/, + }, + // Rule Morocco 2042 only - Aug 10 3:00 -1:00 - + { + 42 /*fromYearTiny*/, + 42 /*toYearTiny*/, + 8 /*inMonth*/, + 0 /*onDayOfWeek*/, + 10 /*onDayOfMonth*/, + 12 /*atTimeCode*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, + -4 /*deltaCode*/, + '-' /*letter*/, + }, + // Rule Morocco 2042 only - Sep 21 2:00 0 - + { + 42 /*fromYearTiny*/, + 42 /*toYearTiny*/, + 9 /*inMonth*/, + 0 /*onDayOfWeek*/, + 21 /*onDayOfMonth*/, + 8 /*atTimeCode*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, + 0 /*deltaCode*/, + '-' /*letter*/, + }, + // Rule Morocco 2043 only - Aug 2 3:00 -1:00 - + { + 43 /*fromYearTiny*/, + 43 /*toYearTiny*/, + 8 /*inMonth*/, + 0 /*onDayOfWeek*/, + 2 /*onDayOfMonth*/, + 12 /*atTimeCode*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, + -4 /*deltaCode*/, + '-' /*letter*/, + }, + // Rule Morocco 2043 only - Sep 6 2:00 0 - + { + 43 /*fromYearTiny*/, + 43 /*toYearTiny*/, + 9 /*inMonth*/, + 0 /*onDayOfWeek*/, + 6 /*onDayOfMonth*/, + 8 /*atTimeCode*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, + 0 /*deltaCode*/, + '-' /*letter*/, + }, + // Rule Morocco 2044 only - Jul 24 3:00 -1:00 - + { + 44 /*fromYearTiny*/, + 44 /*toYearTiny*/, + 7 /*inMonth*/, + 0 /*onDayOfWeek*/, + 24 /*onDayOfMonth*/, + 12 /*atTimeCode*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, + -4 /*deltaCode*/, + '-' /*letter*/, + }, + // Rule Morocco 2044 only - Aug 28 2:00 0 - + { + 44 /*fromYearTiny*/, + 44 /*toYearTiny*/, + 8 /*inMonth*/, + 0 /*onDayOfWeek*/, + 28 /*onDayOfMonth*/, + 8 /*atTimeCode*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, + 0 /*deltaCode*/, + '-' /*letter*/, + }, + // Rule Morocco 2045 only - Jul 9 3:00 -1:00 - + { + 45 /*fromYearTiny*/, + 45 /*toYearTiny*/, + 7 /*inMonth*/, + 0 /*onDayOfWeek*/, + 9 /*onDayOfMonth*/, + 12 /*atTimeCode*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, + -4 /*deltaCode*/, + '-' /*letter*/, + }, + // Rule Morocco 2045 only - Aug 20 2:00 0 - + { + 45 /*fromYearTiny*/, + 45 /*toYearTiny*/, + 8 /*inMonth*/, + 0 /*onDayOfWeek*/, + 20 /*onDayOfMonth*/, + 8 /*atTimeCode*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, + 0 /*deltaCode*/, + '-' /*letter*/, + }, + // Rule Morocco 2046 only - Jul 1 3:00 -1:00 - + { + 46 /*fromYearTiny*/, + 46 /*toYearTiny*/, + 7 /*inMonth*/, + 0 /*onDayOfWeek*/, + 1 /*onDayOfMonth*/, + 12 /*atTimeCode*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, + -4 /*deltaCode*/, + '-' /*letter*/, + }, + // Rule Morocco 2046 only - Aug 5 2:00 0 - + { + 46 /*fromYearTiny*/, + 46 /*toYearTiny*/, + 8 /*inMonth*/, + 0 /*onDayOfWeek*/, + 5 /*onDayOfMonth*/, + 8 /*atTimeCode*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, + 0 /*deltaCode*/, + '-' /*letter*/, + }, + // Rule Morocco 2047 only - Jun 23 3:00 -1:00 - + { + 47 /*fromYearTiny*/, + 47 /*toYearTiny*/, + 6 /*inMonth*/, + 0 /*onDayOfWeek*/, + 23 /*onDayOfMonth*/, + 12 /*atTimeCode*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, + -4 /*deltaCode*/, + '-' /*letter*/, + }, + // Rule Morocco 2047 only - Jul 28 2:00 0 - + { + 47 /*fromYearTiny*/, + 47 /*toYearTiny*/, + 7 /*inMonth*/, + 0 /*onDayOfWeek*/, + 28 /*onDayOfMonth*/, + 8 /*atTimeCode*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, + 0 /*deltaCode*/, + '-' /*letter*/, + }, + // Rule Morocco 2048 only - Jun 7 3:00 -1:00 - + { + 48 /*fromYearTiny*/, + 48 /*toYearTiny*/, + 6 /*inMonth*/, + 0 /*onDayOfWeek*/, + 7 /*onDayOfMonth*/, + 12 /*atTimeCode*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, + -4 /*deltaCode*/, + '-' /*letter*/, + }, + // Rule Morocco 2048 only - Jul 19 2:00 0 - + { + 48 /*fromYearTiny*/, + 48 /*toYearTiny*/, + 7 /*inMonth*/, + 0 /*onDayOfWeek*/, + 19 /*onDayOfMonth*/, + 8 /*atTimeCode*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, + 0 /*deltaCode*/, + '-' /*letter*/, + }, + // Rule Morocco 2049 only - May 30 3:00 -1:00 - + { + 49 /*fromYearTiny*/, + 49 /*toYearTiny*/, + 5 /*inMonth*/, + 0 /*onDayOfWeek*/, + 30 /*onDayOfMonth*/, + 12 /*atTimeCode*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, + -4 /*deltaCode*/, + '-' /*letter*/, + }, + // Rule Morocco 2049 only - Jul 4 2:00 0 - + { + 49 /*fromYearTiny*/, + 49 /*toYearTiny*/, + 7 /*inMonth*/, + 0 /*onDayOfWeek*/, + 4 /*onDayOfMonth*/, + 8 /*atTimeCode*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, + 0 /*deltaCode*/, + '-' /*letter*/, + }, + // Rule Morocco 2050 only - May 15 3:00 -1:00 - + { + 50 /*fromYearTiny*/, + 50 /*toYearTiny*/, + 5 /*inMonth*/, + 0 /*onDayOfWeek*/, + 15 /*onDayOfMonth*/, + 12 /*atTimeCode*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, + -4 /*deltaCode*/, + '-' /*letter*/, + }, + // Rule Morocco 2050 only - Jun 26 2:00 0 - + { + 50 /*fromYearTiny*/, + 50 /*toYearTiny*/, + 6 /*inMonth*/, + 0 /*onDayOfWeek*/, + 26 /*onDayOfMonth*/, + 8 /*atTimeCode*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, + 0 /*deltaCode*/, + '-' /*letter*/, + }, + // Rule Morocco 2051 only - May 7 3:00 -1:00 - + { + 51 /*fromYearTiny*/, + 51 /*toYearTiny*/, + 5 /*inMonth*/, + 0 /*onDayOfWeek*/, + 7 /*onDayOfMonth*/, + 12 /*atTimeCode*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, + -4 /*deltaCode*/, + '-' /*letter*/, + }, }; @@ -5438,7 +5666,7 @@ static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = { const extended::ZonePolicy kPolicyMorocco ACE_TIME_PROGMEM = { kZoneRulesMorocco /*rules*/, nullptr /* letters */, - 67 /*numRules*/, + 94 /*numRules*/, 0 /* numLetters */, }; @@ -5877,9 +6105,9 @@ const extended::ZonePolicy kPolicyPakistan ACE_TIME_PROGMEM = { //--------------------------------------------------------------------------- // Policy name: Palestine -// Rules: 24 -// Memory (8-bit): 222 -// Memory (32-bit): 300 +// Rules: 25 +// Memory (8-bit): 231 +// Memory (32-bit): 312 //--------------------------------------------------------------------------- static const extended::ZoneRule kZoneRulesPalestine[] ACE_TIME_PROGMEM = { @@ -6147,10 +6375,10 @@ static const extended::ZoneRule kZoneRulesPalestine[] ACE_TIME_PROGMEM = { 4 /*deltaCode*/, 'S' /*letter*/, }, - // Rule Palestine 2016 max - Mar Sat>=24 1:00 1:00 S + // Rule Palestine 2016 2018 - Mar Sat>=24 1:00 1:00 S { 16 /*fromYearTiny*/, - 126 /*toYearTiny*/, + 18 /*toYearTiny*/, 3 /*inMonth*/, 6 /*onDayOfWeek*/, 24 /*onDayOfMonth*/, @@ -6171,6 +6399,18 @@ static const extended::ZoneRule kZoneRulesPalestine[] ACE_TIME_PROGMEM = { 0 /*deltaCode*/, '-' /*letter*/, }, + // Rule Palestine 2019 max - Mar lastFri 0:00 1:00 S + { + 19 /*fromYearTiny*/, + 126 /*toYearTiny*/, + 3 /*inMonth*/, + 5 /*onDayOfWeek*/, + 0 /*onDayOfMonth*/, + 0 /*atTimeCode*/, + extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, + 4 /*deltaCode*/, + 'S' /*letter*/, + }, }; @@ -6179,7 +6419,7 @@ static const extended::ZoneRule kZoneRulesPalestine[] ACE_TIME_PROGMEM = { const extended::ZonePolicy kPolicyPalestine ACE_TIME_PROGMEM = { kZoneRulesPalestine /*rules*/, nullptr /* letters */, - 24 /*numRules*/, + 25 /*numRules*/, 0 /* numLetters */, }; @@ -7698,9 +7938,9 @@ const extended::ZonePolicy kPolicyWinn ACE_TIME_PROGMEM = { //--------------------------------------------------------------------------- // Policy name: Zion -// Rules: 27 -// Memory (8-bit): 249 -// Memory (32-bit): 336 +// Rules: 24 +// Memory (8-bit): 222 +// Memory (32-bit): 300 //--------------------------------------------------------------------------- static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { @@ -7860,13 +8100,13 @@ static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*deltaCode*/, 'S' /*letter*/, }, - // Rule Zion 2005 only - Apr 1 2:00 1:00 D + // Rule Zion 2005 2012 - Apr Fri<=1 2:00 1:00 D { 5 /*fromYearTiny*/, - 5 /*toYearTiny*/, + 12 /*toYearTiny*/, 4 /*inMonth*/, - 0 /*onDayOfWeek*/, - 1 /*onDayOfMonth*/, + 5 /*onDayOfWeek*/, + -1 /*onDayOfMonth*/, 8 /*atTimeCode*/, extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, 4 /*deltaCode*/, @@ -7884,18 +8124,6 @@ static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*deltaCode*/, 'S' /*letter*/, }, - // Rule Zion 2006 2010 - Mar Fri>=26 2:00 1:00 D - { - 6 /*fromYearTiny*/, - 10 /*toYearTiny*/, - 3 /*inMonth*/, - 5 /*onDayOfWeek*/, - 26 /*onDayOfMonth*/, - 8 /*atTimeCode*/, - extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, - 4 /*deltaCode*/, - 'D' /*letter*/, - }, // Rule Zion 2006 only - Oct 1 2:00 0 S { 6 /*fromYearTiny*/, @@ -7956,18 +8184,6 @@ static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*deltaCode*/, 'S' /*letter*/, }, - // Rule Zion 2011 only - Apr 1 2:00 1:00 D - { - 11 /*fromYearTiny*/, - 11 /*toYearTiny*/, - 4 /*inMonth*/, - 0 /*onDayOfWeek*/, - 1 /*onDayOfMonth*/, - 8 /*atTimeCode*/, - extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, - 4 /*deltaCode*/, - 'D' /*letter*/, - }, // Rule Zion 2011 only - Oct 2 2:00 0 S { 11 /*fromYearTiny*/, @@ -7980,18 +8196,6 @@ static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { 0 /*deltaCode*/, 'S' /*letter*/, }, - // Rule Zion 2012 only - Mar Fri>=26 2:00 1:00 D - { - 12 /*fromYearTiny*/, - 12 /*toYearTiny*/, - 3 /*inMonth*/, - 5 /*onDayOfWeek*/, - 26 /*onDayOfMonth*/, - 8 /*atTimeCode*/, - extended::ZoneContext::TIME_MODIFIER_W /*atTimeModifier*/, - 4 /*deltaCode*/, - 'D' /*letter*/, - }, // Rule Zion 2012 only - Sep 23 2:00 0 S { 12 /*fromYearTiny*/, @@ -8036,7 +8240,7 @@ static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = { const extended::ZonePolicy kPolicyZion ACE_TIME_PROGMEM = { kZoneRulesZion /*rules*/, nullptr /* letters */, - 27 /*numRules*/, + 24 /*numRules*/, 0 /* numLetters */, }; diff --git a/src/ace_time/zonedbx/zone_policies.h b/src/ace_time/zonedbx/zone_policies.h index 40999cfa8..902e185f0 100644 --- a/src/ace_time/zonedbx/zone_policies.h +++ b/src/ace_time/zonedbx/zone_policies.h @@ -1,12 +1,12 @@ // This file was generated by the following script: // -// $ ../../../tools/tzcompiler.py --input_dir ../../../tools/../../tz --output_dir /home/brian/dev/AceTime/src/ace_time/zonedbx --tz_version 2019a --action zonedb --language arduino --scope extended --start_year 2000 --until_year 2050 +// $ ../../../tools/tzcompiler.py --input_dir ../../../tools/../../tz --output_dir /home/brian/dev/AceTime/src/ace_time/zonedbx --tz_version 2019b --action zonedb --language arduino --scope extended --start_year 2000 --until_year 2050 // // using the TZ Database files // // africa, antarctica, asia, australasia, backward, etcetera, europe, northamerica, southamerica // -// from https://github.com/eggert/tz/releases/tag/2019a +// from https://github.com/eggert/tz/releases/tag/2019b // // DO NOT EDIT diff --git a/src/ace_time/zonedbx/zone_registry.cpp b/src/ace_time/zonedbx/zone_registry.cpp index 1b0d7faa3..1661d9f74 100644 --- a/src/ace_time/zonedbx/zone_registry.cpp +++ b/src/ace_time/zonedbx/zone_registry.cpp @@ -1,9 +1,9 @@ // This file was generated by the following script: // -// $ ../../../tools/tzcompiler.py --input_dir ../../../tools/../../tz --output_dir /home/brian/dev/AceTime/src/ace_time/zonedbx --tz_version 2019a --action zonedb --language arduino --scope extended --start_year 2000 --until_year 2050 +// $ ../../../tools/tzcompiler.py --input_dir ../../../tools/../../tz --output_dir /home/brian/dev/AceTime/src/ace_time/zonedbx --tz_version 2019b --action zonedb --language arduino --scope extended --start_year 2000 --until_year 2050 // // using the TZ Database files from -// https://github.com/eggert/tz/releases/tag/2019a +// https://github.com/eggert/tz/releases/tag/2019b // // DO NOT EDIT diff --git a/src/ace_time/zonedbx/zone_registry.h b/src/ace_time/zonedbx/zone_registry.h index 701a23bdd..10750b787 100644 --- a/src/ace_time/zonedbx/zone_registry.h +++ b/src/ace_time/zonedbx/zone_registry.h @@ -1,9 +1,9 @@ // This file was generated by the following script: // -// $ ../../../tools/tzcompiler.py --input_dir ../../../tools/../../tz --output_dir /home/brian/dev/AceTime/src/ace_time/zonedbx --tz_version 2019a --action zonedb --language arduino --scope extended --start_year 2000 --until_year 2050 +// $ ../../../tools/tzcompiler.py --input_dir ../../../tools/../../tz --output_dir /home/brian/dev/AceTime/src/ace_time/zonedbx --tz_version 2019b --action zonedb --language arduino --scope extended --start_year 2000 --until_year 2050 // // using the TZ Database files from -// https://github.com/eggert/tz/releases/tag/2019a +// https://github.com/eggert/tz/releases/tag/2019b // // DO NOT EDIT From 17256993c3fb26bfd093b1192813e80501debd75 Mon Sep 17 00:00:00 2001 From: Brian Park Date: Tue, 13 Aug 2019 08:55:41 -0700 Subject: [PATCH 45/55] README.md, USER_GUIDE_.md: Add validation against Hinnant date library --- CHANGELOG.md | 22 ++++++++------ README.md | 27 ++++++++++------- USER_GUIDE.md | 81 +++++++++++++++++++++++++++++---------------------- 3 files changed, 76 insertions(+), 54 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cf0708f8a..6c59f1088 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,18 +6,22 @@ that the library supports timezones with one-minute shifts in the future. * Implement TimeOffset using 2 bytes (`int16_t`) instead of one byte (`int8_t`) to give it a resolution of one minute instead of 15 minutes. - * Generate zoneinfo files with the AT and UNTIL timestamps retaining the - full one-minute resolution (instead of truncating to 15-minute boundary). - The lower 4-bits of the `modifier` field hold the 0-14 minute component, - while the upper 4-bits of the `modifier` field hold the 'w', 's' and 'u' - suffixes. Timezones whose DST transitions occur at 00:01 + * Generate zoneinfo files containing AT and UNTIL timestamps with + one-minute resolution (instead of 15-minute resolution). ZoneInfo files + (`zonedb/` and `zonedbx/`) remain identical in size. Flash memory + consumption usually increases by 130 to 500 bytes, but sometimes decreases + by 50-100 bytes. Timezones whose DST transitions occur at 00:01 (America/Goose_Bay, America/Moncton, America/St_Johns, Asia/Gaza, - Asia/Hebron) no longer truncate to 00:00. ZoneInfo files (`zonedb/` and - `zonedbx/`) remain identical in size. Flash memory consumption - usually increases by 130 to 500 bytes, but sometimes decreases by 50-100 - bytes. + Asia/Hebron) no longer truncate to 00:00. * Rename `TimeOffset::forHour()` to `forHours()` for consistency with `forMinutes()`. + * Validate against the C++11/14/17 + [Hinnant Date](https://github.com/HowardHinnant/date) library by + creating additional `tests/validation` tests. + * Upgrade `zonedb` and `zonedbx` zoneinfo files to version 2019b, + after validating against the Hinnant date library. + * Make `ExtendedZoneProcessor` more memory efficient for 32-bit processors + by packing internal fields to 4-byte boundaries. * 0.6.1 * Create a second Jenkins continuous build pipeline file `tests/JenskinfileUnitHost` to use UnitHostDuino to run the unit tests diff --git a/README.md b/README.md index 925c055af..2c2a77032 100644 --- a/README.md +++ b/README.md @@ -116,16 +116,23 @@ The library provides 2 sets of zoneinfo files created from the IANA TZ Database: the TZ Database (essentially the entire database) intended to be used with the `ExtendedZoneProcessor` class. -These zoneinfo files (and the `ZoneProcessor` classes which calculate the UTC -offsets and DST transitions) have been validated to match the UTC offsets -calculated using the Python [pytz](https://pypi.org/project/pytz/) library from -the year 2000 until 2037 (inclusive), and using the [Java 11 -Time](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/time/package-summary.html) -library from year 2000 to 2049 (inclusive). Custom datasets with smaller or -larger range of years may be generated by developers using scripts provided in -this library (although this is not documented currently). The target application -may be compiled against the custom dataset instead of using `zonedb::` and -`zonedbx::` zone files provided in this library. +These zoneinfo files and the algorithms in this library (specifically +the `ZoneProcessor` classes) have been validated to match the UTC offsets +calculated using 3 other independent date/time libraries: + +* the Python [pytz](https://pypi.org/project/pytz/) library from + the year 2000 until 2037 (inclusive), +* the Java JDK 11 + [java.time](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/time/package-summary.html) + library from year 2000 to 2049 (inclusive), +* the C++11/14/17 [Hinnant date](https://github.com/HowardHinnant/date) libary + from year 2000 to 2049 (inclusive). + +Custom datasets with smaller or larger range of years may be generated by +developers using scripts provided in this library (although this is not +documented currently). The target application may be compiled against the custom +dataset instead of using `zonedb::` and `zonedbx::` zone files provided in this +library. It is expected that most applications using AceTime will use only a small number of timezones at the same time (1 to 3 zones have been extensively tested) and diff --git a/USER_GUIDE.md b/USER_GUIDE.md index 1fce11d44..dadafadbd 100644 --- a/USER_GUIDE.md +++ b/USER_GUIDE.md @@ -67,13 +67,15 @@ usually have more precise dependency information: Various scripts in the `tools/` directory depend on: -* [TZ Database on GitHub](https://github.com/eggert/tz) +* [IANA TZ Database on GitHub](https://github.com/eggert/tz) * [pytz library](https://pypi.org/project/pytz/) +* [Hinnant date library](https://github.com/HowardHinnant/date) * Python 3.5 or greater * Java OpenJDK 11 If you want to run the unit tests or some of the command line examples using a Linux or MacOS machine, you need: + * [UnixHostDuino](https://github.com/bxparks/UnixHostDuino) ### Doxygen Docs @@ -1245,15 +1247,9 @@ The `zonedb/` files do not support all the timezones in the TZ Database. The list of these zones and The reasons for excluding them are given at the bottom of the [zonedb/zone_infos.h](src/ace_time/zonedb/zone_infos.h) file. -Although the `zonedbx/` files support all zones from its TZ input files, there -are number of timezones whose DST transitions in the past happened at 00:01 -(instead of exactly at midnight 00:00). To save memory, the internal -representation used by AceTime supports transitions only at -15-minute boundaries. For these timezones, the DST transition time is shifted to -00:00 instead, and the transition happens one-minute earlier than it should. As -of TZ DB version 2019a, there are 5 zones affected by this rounding, as listed -at the bottom of [zonedbx/zone_infos.h](src/ace_time/zonedbx/zone_infos.h), and -these all occur before the year 2012. +The goal of the `zonedbx/` files is to support all zones listed in the TZ +Database. Currently, as of TZ Database version 2019b, this goal is met +from the year 2000 to 2049 inclusive. #### BasicZone and ExtendedZone @@ -1303,7 +1299,8 @@ class ExtendedZone { } ``` -They are meant to be used transiently, for example: +The `BasicZone` and `ExtendedZone` objects are meant to be used transiently, +for example: ```C++ ... const basic::ZoneInfo* zoneInfo = ...; @@ -1312,22 +1309,27 @@ Serial.println(BasicZone(zoneInfo).shortName()); ``` The return type of `name()` and `shortName()` change whether or not the zone -name is stored in flash memory or in static memory. The `name()` method returns -the full zone name from the TZ Database (e.g. `"America/Los_Angeles"`). The -`shortName()` method returns only the last component (e.g. `"Los_Angeles"`). +name is stored in flash memory or in static memory. As of v0.4, +`ACE_TIME_USE_PROGMEM=1` for all platforms. On platforms which do not directly +support `PROGMEM`, they provide macros which retain compatibilty with `PROGMEM` +so everything should work transparently. + +The `name()` method returns the full zone name from the TZ Database (e.g. +`"America/Los_Angeles"`). The `shortName()` method returns only the last +component (e.g. `"Los_Angeles"`). ### ZoneManager The `TimeZone::forZoneInfo()` methods are simple to use but have the -disadvantage that the `BasicZoneProcessor` or `ExtendedZoneProcessor` -need to be created manually for each -`TimeZone` instance. This works well for a single time zone, -but if you have an application that needs 3 or more time zones, this may become -cumbersome. Also, it is difficult to reconstruct a `TimeZone` dynamically, say, -from its fullly qualified name (e.g. `"America/Los_Angeles"`). The `ZoneManager` -solves these problems. It keeps an internal cache or `ZoneProcessors`, reusing -them as needed. And it holds a registry of `ZoneInfo` objects, so that a -`TimeZone` can be created using its `zoneName`, `zoneInfo`, or `zoneId`. +disadvantage that the `BasicZoneProcessor` or `ExtendedZoneProcessor` need to be +created manually for each `TimeZone` instance. This works well for a single time +zone, but if you have an application that needs 3 or more time zones, this may +become cumbersome. Also, it is difficult to reconstruct a `TimeZone` +dynamically, say, from its fullly qualified name (e.g. `"America/Los_Angeles"`). +The `ZoneManager` solves these problems. It keeps an internal cache or +`ZoneProcessors`, reusing them as needed. And it holds a registry of `ZoneInfo` +objects, so that a `TimeZone` can be created using its `zoneName`, `zoneInfo`, +or `zoneId`. ```C++ namespace ace_time{ @@ -2322,12 +2324,28 @@ The end result is the 4 validation programs under `tests/validation`: * `ExtendedValidationUsingJavaTest` * `ExtendedValidationUsingPythonTest` +The problem with the `java.time` library is that the underlying timezone +database seems to be locked to the release version of the JDK. I have not +been able to figure out a way to upgrade the timezone database independently +(it's something to do with the +[TZUpdater](https://www.oracle.com/technetwork/java/javase/documentation/tzupdater-readme-136440.html) +but I haven't figured it out.) + +This led me to the C++11/14/17 [Hinnant +date](https://github.com/HowardHinnant/date) library, which has apparently +been accepted into the C++20 standard. This date and timezone library is +incredible powerful, complex and difficult to use. I managed to incorporate it +into 2 more validation tests, and verified that the AceTime library matches the +Hinnant date library for all timezones from 2000 to 2049 (inclusive): + +* `BasicValidationUsingHinnantDateTest` +* `ExtendedValidationUsingHinnantDateTest` + When these tests pass, they show that the timezone algorithms in AceTime produce -the same results as the Python `pytz` library and the Java 11 `java.time` -library, showing that 3 independently written libraries and algorithms agree -with each other. These validation tests give me good confidence that AceTime -produces correct results for the most part, but it is entirely expected that -some obscure edge-case bugs will be found in the future. +the same results as the Python `pytz` library, the Java 11 `java.time` library +and the C++11/14/17 Hinnant `date` library. They give me good confidence that +AceTime produces the correct results, but it is entirely expected that some +obscure edge-case bugs will be found in the future. ## Benchmarks @@ -2631,18 +2649,11 @@ some time to take a closer look in the future. [pytz](https://pypi.org/project/pytz/) library. Unfortunately, pytz does not support dates after Unix signed 32-bit `time_t` rollover at (2038-01-19T03:14:07Z). - * These are too big to run on any Arduino controller. They are designed to - run on a Linux or MacOS machine through the Makefiles using the - [UnixHostDuino](https://github.com/bxparks/UnixHostDuino) emulator. * `BasicValidationUsingJavaTest` and `ExtendedValidationUsingJavaTest` * These tests compare the transition times calculated by AceTime to Java 11 `java.time` package which should support the entire range of dates that AceTime can represent. We have artificially limited the range of testing from 2000 to 2050. - * These are too big to run on any Arduino controller. They are designed to - run on a Linux or MacOS machine through the Makefiles using the - [UnixHostDuino](https://github.com/bxparks/UnixHostDuino) - emulator. * `zonedb/` and `zonedbx/` zoneinfo files * These statically defined data structures are loaded into flash memory using the `PROGMEM` keyword. The vast majority of the data structure From c41507ce41bfb60a1e5dce8c64b4e6d606dbc0c1 Mon Sep 17 00:00:00 2001 From: Brian Park Date: Tue, 13 Aug 2019 09:55:26 -0700 Subject: [PATCH 46/55] tests/validation: Upgrade to pytz 2019.2 for TZ Database 2019b compatibility (#6) --- tests/validation/BasicValidationUsingPythonTest/Makefile | 4 +++- tests/validation/ExtendedValidationUsingPythonTest/Makefile | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/tests/validation/BasicValidationUsingPythonTest/Makefile b/tests/validation/BasicValidationUsingPythonTest/Makefile index 929b3c5eb..3a84cb16f 100644 --- a/tests/validation/BasicValidationUsingPythonTest/Makefile +++ b/tests/validation/BasicValidationUsingPythonTest/Makefile @@ -13,4 +13,6 @@ runtests: .PHONY: $(GENERATED) validation_data.cpp: - ../../../tools/tzcompiler.sh --tag 2019a --action unittest --language arduino --scope basic --start_year 2000 --until_year 2038 + ../../../tools/tzcompiler.sh --tag 2019b --action unittest \ + --language arduino --scope basic --start_year 2000 \ + --until_year 2038 diff --git a/tests/validation/ExtendedValidationUsingPythonTest/Makefile b/tests/validation/ExtendedValidationUsingPythonTest/Makefile index 03f89b5de..61f356cc8 100644 --- a/tests/validation/ExtendedValidationUsingPythonTest/Makefile +++ b/tests/validation/ExtendedValidationUsingPythonTest/Makefile @@ -13,4 +13,6 @@ runtests: .PHONY: $(GENERATED) validation_data.cpp: - ../../../tools/tzcompiler.sh --tag 2019a --action unittest --language arduino --scope extended --start_year 2000 --until_year 2038 + ../../../tools/tzcompiler.sh --tag 2019b --action unittest \ + --language arduino --scope extended --start_year 2000 \ + --until_year 2038 From 46c5767651451d6843c86dfa216ba47680696748 Mon Sep 17 00:00:00 2001 From: Brian Park Date: Tue, 13 Aug 2019 10:23:24 -0700 Subject: [PATCH 47/55] USER_GUIDE.md: Rewrite 'Testing' section, splitting 3 reference libraries into subsections, adding specific version numbers --- USER_GUIDE.md | 115 ++++++++++++++++++++++++++++++++------------------ 1 file changed, 74 insertions(+), 41 deletions(-) diff --git a/USER_GUIDE.md b/USER_GUIDE.md index dadafadbd..f54e77169 100644 --- a/USER_GUIDE.md +++ b/USER_GUIDE.md @@ -2293,23 +2293,49 @@ the `ExtendedZoneProcessor` was much larger than the ones supported by timezones. My next idea was to validate AceTime against a known, independently created, -timezone library that also supports the TZ Database. The Python pytz library was -a natural choice since the `tzcompiler.py` was already written in Python. The -`BasicValidationUsingPythonTest` and `ExtendedValidationUsingPythonTest` tests -are the results, where I use `pytz` to determine the list of DST transitions for -all timezones, then determine the expected (year, month, day, hour, minute, -second) components that `ZonedDateTime` should produce. The `tzcompiler.py` -generates a `validation_data.cpp` file which contains the test data points for -all supported timezones. The resulting program no longer fits in any Arduino -microcontroller that I am aware of, but through the use of the -[UnixHostDuino](https://github.com/bxparks/UnixHostDuino) emulation -framework, I can run these large validation test suites on a Linux or Mac -desktop. This worked great until I discovered that `pytz` supports [dates only -until 2038](https://answers.launchpad.net/pytz/+question/262216). That meant -that I could not validate the `ZonedDateTime` classes after 2038. - -I then turned to Java 11 `java.time` library, which supports years through the -[year 1000000000 +timezone library that also supports the TZ Database. Currently, I validate +the AceTime library against 3 other timezone libraries: + +* Python [pytz](https://pypi.org/project/pytz/) +* Java 11 [java.time](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/time/package-summary.html) +* C++11/14/17 [Hinnant date](https://github.com/HowardHinnant/date) + +When these tests pass, I become confident that AceTime is producing the correct +results, but it is entirely expected that some obscure edge-case bugs will be +found in the future. + +### Python pytz + +The Python pytz library was a natural choice since the `tzcompiler.py` was +already written in Python. I created: + +* [BasicValidationUsingPythonTest](tests/validation/BasicValidationUsingPythonTest/) +* [ExtendedValidationUsingPythonTest](tests/validation/ExtendedValidationUsingPythonTest/) + +The `pytz` library is used to generate various C++ source code +(`validation_data.cpp`, `validation_data.h`, `validation_tests.cpp`) which +contain a list of epochSeconds, the UTC offset, the DST offset, at DST +transition points, for all timezones. The integration test then compiles in the +`ZonedDateTime` and verifies that the expected DST transitions and date +components are identical. + +The resulting data test set contains between 150k to 220k data points, and can +no longer fit in any Arduino microcontroller that I am aware of. They can be +executed only on desktop-class Linux or MacOS machines through the use of the +[UnixHostDuino](https://github.com/bxparks/UnixHostDuino) emulation framework. + +The `pytz` library supports [dates only until +2038](https://answers.launchpad.net/pytz/+question/262216). It is also tricky to +match the `pytz` version to the TZ Database version used by AceTime. The +following combinations have been tested: + +* TZ Datbase: 2019a; pytz: 2019.1 +* TZ Datbase: 2019b; pytz: 2019.2 + +### Java java.time + +The Java 11 `java.time` library is not limited to 2038 but supports years +through the [year 1000000000 (billion)](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/time/class-use/Instant.html). I wrote the [TestDataGenerator.java](tools/java/TestDataGenerator) program to generate a `validation_data.cpp` file in exactly the same format as the @@ -2317,35 +2343,42 @@ generate a `validation_data.cpp` file in exactly the same format as the which is the exact range of years supported by the `zonedb::` and `zonedbx::` zoneinfo files. -The end result is the 4 validation programs under `tests/validation`: +The result is 2 validation programs under `tests/validation`: + +* [BasicValidationUsingJavaTest](tests/validation/BasicValidationUsingJavaTest/) +* [ExtendedValidationUsingJavaTest](tests/validation/ExtendedValidationUsingJavaTest/) -* `BasicValidationUsingJavaTest` -* `BasicValidationUsingPythonTest` -* `ExtendedValidationUsingJavaTest` -* `ExtendedValidationUsingPythonTest` +The most difficult part of using Java is figuring out how to install it +and figuring out which of the many variants of the JDK to use. On Ubuntu 18.04, +I used `openjdk 11.0.4 2019-07-16` which seems to use TZ Database 2018g. I have +no recollection how I installed, I think it was something like `$ sudo apt +install openjdk-11-jdk:amd64`. -The problem with the `java.time` library is that the underlying timezone -database seems to be locked to the release version of the JDK. I have not -been able to figure out a way to upgrade the timezone database independently -(it's something to do with the +The underlying timezone database used by the `java.time` package seems to be +locked to the release version of the JDK. I have not been able to figure out a +way to upgrade the timezone database independently (it's something to do with +the [TZUpdater](https://www.oracle.com/technetwork/java/javase/documentation/tzupdater-readme-136440.html) but I haven't figured it out.) -This led me to the C++11/14/17 [Hinnant -date](https://github.com/HowardHinnant/date) library, which has apparently -been accepted into the C++20 standard. This date and timezone library is -incredible powerful, complex and difficult to use. I managed to incorporate it -into 2 more validation tests, and verified that the AceTime library matches the -Hinnant date library for all timezones from 2000 to 2049 (inclusive): - -* `BasicValidationUsingHinnantDateTest` -* `ExtendedValidationUsingHinnantDateTest` - -When these tests pass, they show that the timezone algorithms in AceTime produce -the same results as the Python `pytz` library, the Java 11 `java.time` library -and the C++11/14/17 Hinnant `date` library. They give me good confidence that -AceTime produces the correct results, but it is entirely expected that some -obscure edge-case bugs will be found in the future. +### C++ Hinnant Date + +I looked for a timezone library that allowed me to control the specific +version of the TZ Database. This led me to the C++11/14/17 [Hinnant +date](https://github.com/HowardHinnant/date) library, which has apparently been +accepted into the C++20 standard. This date and timezone library is incredible +powerful, complex and difficult to use. I managed to incorporate it into 2 more +validation tests, and verified that the AceTime library matches the Hinnant date +library for all timezones from 2000 to 2049 (inclusive): + +* [BasicValidationUsingHinnantDateTest](tests/validation/BasicValidationUsingHinnantDateTest/) +* [ExtendedValidationUsingHinnantDateTest](tests/validation/ExtendedValidationUsingHinnantDateTest/) + +I have validated the AceTime library against the following versions against +the Hinnant date library: + +* TZ Database: 2019a +* TZ Database: 2019b ## Benchmarks From b29dfaac8e24f96b65857026755b5ff288306219 Mon Sep 17 00:00:00 2001 From: Brian Park Date: Tue, 13 Aug 2019 10:28:28 -0700 Subject: [PATCH 48/55] tests/*ZoneProcessorTest: Upgrade to 2019b (#6) --- tests/BasicZoneProcessorTest/BasicZoneProcessorTest.ino | 2 +- tests/ExtendedZoneProcessorTest/ExtendedZoneProcessorTest.ino | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/BasicZoneProcessorTest/BasicZoneProcessorTest.ino b/tests/BasicZoneProcessorTest/BasicZoneProcessorTest.ino index 57c1d4742..3903b1ef9 100644 --- a/tests/BasicZoneProcessorTest/BasicZoneProcessorTest.ino +++ b/tests/BasicZoneProcessorTest/BasicZoneProcessorTest.ino @@ -11,7 +11,7 @@ using namespace ace_time; // -------------------------------------------------------------------------- test(BasicZoneProcessorTest, tzVersion) { - assertEqual("2019a", zonedb::kTzDatabaseVersion); + assertEqual("2019b", zonedb::kTzDatabaseVersion); } test(BasicZoneProcessorTest, operatorEqualEqual) { diff --git a/tests/ExtendedZoneProcessorTest/ExtendedZoneProcessorTest.ino b/tests/ExtendedZoneProcessorTest/ExtendedZoneProcessorTest.ino index 6a2fe0a61..deac2174a 100644 --- a/tests/ExtendedZoneProcessorTest/ExtendedZoneProcessorTest.ino +++ b/tests/ExtendedZoneProcessorTest/ExtendedZoneProcessorTest.ino @@ -169,7 +169,7 @@ static const ZoneInfo kZoneTestLos_Angeles ACE_TIME_PROGMEM = { // -------------------------------------------------------------------------- test(ExtendedZoneProcessorTest, tzVersion) { - assertEqual("2019a", zonedbx::kTzDatabaseVersion); + assertEqual("2019b", zonedbx::kTzDatabaseVersion); } static const ZoneEra era ACE_TIME_PROGMEM = From ac58e7c3196d703129792c2a805d3c78b307fc0d Mon Sep 17 00:00:00 2001 From: Brian Park Date: Tue, 13 Aug 2019 10:38:28 -0700 Subject: [PATCH 49/55] tests/Makefile: Add 'set -e' to cause for-loops to fail if the command in the loop fails --- tests/Makefile | 3 +++ tests/validation/Makefile | 3 +++ 2 files changed, 6 insertions(+) diff --git a/tests/Makefile b/tests/Makefile index 16645ce3b..f112e531f 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -1,16 +1,19 @@ tests: + set -e; \ for i in *Test/Makefile; do \ echo '==== Making:' $$(dirname $$i); \ make -C $$(dirname $$i) -j; \ done runtests: + set -e; \ for i in *Test/Makefile; do \ echo '==== Running:' $$(dirname $$i); \ $$(dirname $$i)/$$(dirname $$i).out; \ done clean: + set -e; \ for i in *Test/Makefile; do \ echo '==== Cleaning:' $$(dirname $$i); \ make -C $$(dirname $$i) clean; \ diff --git a/tests/validation/Makefile b/tests/validation/Makefile index cc2e7a3a0..888bc35b4 100644 --- a/tests/validation/Makefile +++ b/tests/validation/Makefile @@ -1,16 +1,19 @@ tests: + set -e; \ for i in */Makefile; do \ echo '==== Making:' $$(dirname $$i); \ make -C $$(dirname $$i); \ done runtests: + set -e; \ for i in */Makefile; do \ echo '==== Running:' $$(dirname $$i); \ $$(dirname $$i)/$$(dirname $$i).out; \ done clean: + set -e; \ for i in */Makefile; do \ echo '==== Cleaning:' $$(dirname $$i); \ make -C $$(dirname $$i) clean; \ From 3ca09fddf0ff9aa54efdf0a7532a05c7bac7d645 Mon Sep 17 00:00:00 2001 From: Brian Park Date: Tue, 13 Aug 2019 10:46:28 -0700 Subject: [PATCH 50/55] src: Update doxygen docs for yearTiny() that this is intended for memory constrained code and may be deprecated in the future --- src/ace_time/LocalDate.h | 12 ++++++++++-- src/ace_time/LocalDateTime.h | 12 ++++++++++-- src/ace_time/OffsetDateTime.h | 12 ++++++++++-- src/ace_time/ZonedDateTime.h | 12 ++++++++++-- 4 files changed, 40 insertions(+), 8 deletions(-) diff --git a/src/ace_time/LocalDate.h b/src/ace_time/LocalDate.h index db6e53027..9a2833c06 100644 --- a/src/ace_time/LocalDate.h +++ b/src/ace_time/LocalDate.h @@ -221,10 +221,18 @@ class LocalDate { /** Set the year given the full year. */ void year(int16_t year) { mYearTiny = year - kEpochYear; } - /** Return the single-byte year offset from year 2000. */ + /** + * Return the single-byte year offset from year 2000. Intended for memory + * constrained or performance critical code. May be deprecated in the + * future. + */ int8_t yearTiny() const { return mYearTiny; } - /** Set the single-byte year offset from year 2000. */ + /** + * Set the single-byte year offset from year 2000. Intended for memory + * constrained or performance critical code. May be deprecated in the + * future. + */ void yearTiny(int8_t yearTiny) { mYearTiny = yearTiny; } /** Return the month with January=1, December=12. */ diff --git a/src/ace_time/LocalDateTime.h b/src/ace_time/LocalDateTime.h index 654761607..6576a9d54 100644 --- a/src/ace_time/LocalDateTime.h +++ b/src/ace_time/LocalDateTime.h @@ -168,10 +168,18 @@ class LocalDateTime { /** Set the year. */ void year(int16_t year) { mLocalDate.year(year); } - /** Return the single-byte year offset from year 2000. */ + /** + * Return the single-byte year offset from year 2000. Intended for memory + * constrained or performance critical code. May be deprecated in the + * future. + */ int8_t yearTiny() const { return mLocalDate.yearTiny(); } - /** Set the single-byte year offset from year 2000. */ + /** + * Set the single-byte year offset from year 2000. Intended for memory + * constrained or performance critical code. May be deprecated in the + * future. + */ void yearTiny(int8_t yearTiny) { mLocalDate.yearTiny(yearTiny); } /** Return the month with January=1, December=12. */ diff --git a/src/ace_time/OffsetDateTime.h b/src/ace_time/OffsetDateTime.h index f38ccc0f6..b92bb0d43 100644 --- a/src/ace_time/OffsetDateTime.h +++ b/src/ace_time/OffsetDateTime.h @@ -162,10 +162,18 @@ class OffsetDateTime { /** Set the year. */ void year(int16_t year) { mLocalDateTime.year(year); } - /** Return the single-byte year offset from year 2000. */ + /** + * Return the single-byte year offset from year 2000. Intended for memory + * constrained or performance critical code. May be deprecated in the + * future. + */ int8_t yearTiny() const { return mLocalDateTime.yearTiny(); } - /** Set the single-byte year offset from year 2000. */ + /** + * Set the single-byte year offset from year 2000. Intended for memory + * constrained or performance critical code. May be deprecated in the + * future. + */ void yearTiny(int8_t yearTiny) { mLocalDateTime.yearTiny(yearTiny); } /** Return the month with January=1, December=12. */ diff --git a/src/ace_time/ZonedDateTime.h b/src/ace_time/ZonedDateTime.h index 2e1ad13b8..bb9a66791 100644 --- a/src/ace_time/ZonedDateTime.h +++ b/src/ace_time/ZonedDateTime.h @@ -141,10 +141,18 @@ class ZonedDateTime { /** Set the year given the full year. */ void year(int16_t year) { mOffsetDateTime.year(year); } - /** Return the single-byte year offset from year 2000. */ + /** + * Return the single-byte year offset from year 2000. Intended for memory + * constrained or performance critical code. May be deprecated in the + * future. + */ int8_t yearTiny() const { return mOffsetDateTime.yearTiny(); } - /** Set the single-byte year offset from year 2000. */ + /** + * Set the single-byte year offset from year 2000. Intended for memory + * constrained or performance critical code. May be deprecated in the + * future. + */ void yearTiny(int8_t yearTiny) { mOffsetDateTime.yearTiny(yearTiny); } /** Return the month with January=1, December=12. */ From 9757bbc3181c5f939fb9d368b0dd6f7a6080e998 Mon Sep 17 00:00:00 2001 From: Brian Park Date: Tue, 13 Aug 2019 10:59:04 -0700 Subject: [PATCH 51/55] Bump version to 0.7 --- CHANGELOG.md | 8 +++++--- README.md | 10 ++++------ USER_GUIDE.md | 2 +- docs/doxygen.cfg | 2 +- library.properties | 2 +- src/AceTime.h | 4 ++-- 6 files changed, 14 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6c59f1088..c49a2fcb9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ # Changelog * Unreleased +* 0.7 * Change TimeZoneData to store mStdOffset and mDstOffset in units of one minute (instead of 15-minute increments, "code") in the off chance that the library supports timezones with one-minute shifts in the future. @@ -15,13 +16,14 @@ Asia/Hebron) no longer truncate to 00:00. * Rename `TimeOffset::forHour()` to `forHours()` for consistency with `forMinutes()`. - * Validate against the C++11/14/17 + * Make `ExtendedZoneProcessor` more memory efficient for 32-bit processors + by packing internal fields to 4-byte boundaries. + * Integrate C++11/14/17 [Hinnant Date](https://github.com/HowardHinnant/date) library by creating additional `tests/validation` tests. * Upgrade `zonedb` and `zonedbx` zoneinfo files to version 2019b, after validating against the Hinnant date library. - * Make `ExtendedZoneProcessor` more memory efficient for 32-bit processors - by packing internal fields to 4-byte boundaries. + * Upgrade to `pytz` version 2019.2 to pickup TZ Database 2019b. * 0.6.1 * Create a second Jenkins continuous build pipeline file `tests/JenskinfileUnitHost` to use UnitHostDuino to run the unit tests diff --git a/README.md b/README.md index 2c2a77032..11cf668d7 100644 --- a/README.md +++ b/README.md @@ -205,13 +205,11 @@ Conversion from an epochSeconds to date-time components including timezone * 2.8 microseconds on an ESP32, * 6 microseconds on a Teensy 3.2. -**Version**: 0.6.1 (2019-08-07, TZ DB version 2019a, beta) +**Version**: 0.7 (2019-08-13, TZ DB version 2019b, beta) -**Status**: I'm considering some changes to the internal format of the -`zonedb::` and `zonedbx::` zoneinfo files which will increase the time -resolution of DST shifts from 15-minute resolution to 1-minute resolution, -without increasing size of the database size. I think I can do this with almost -no changes to the library's external API. +**Status**: Upgraded to latest TZ DB version 2019b. Validated against 3 +other timezone libraries (Python, Java, C++). See [Changelog.md](Changelog.md) +for more details. API quite stable now. ## Examples diff --git a/USER_GUIDE.md b/USER_GUIDE.md index f54e77169..116eebd17 100644 --- a/USER_GUIDE.md +++ b/USER_GUIDE.md @@ -2,7 +2,7 @@ See the [README.md](README.md) for introductory background. -Version: 0.6.1 (2019-08-07, TZ DB version 2019a, beta) +Version: 0.7 (2019-08-13, TZ DB version 2019b, beta) ## Installation diff --git a/docs/doxygen.cfg b/docs/doxygen.cfg index 9fb747548..14248311b 100644 --- a/docs/doxygen.cfg +++ b/docs/doxygen.cfg @@ -38,7 +38,7 @@ PROJECT_NAME = "AceTime" # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 0.6.1 +PROJECT_NUMBER = 0.7 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a diff --git a/library.properties b/library.properties index 316641e9d..f532c7a08 100644 --- a/library.properties +++ b/library.properties @@ -1,5 +1,5 @@ name=AceTime -version=0.6.1 +version=0.7 author=Brian T. Park maintainer=Brian T. Park sentence=Date, time, clock, and TZ Database timezones for Arduino. diff --git a/src/AceTime.h b/src/AceTime.h index e470baa7e..5f07576b3 100644 --- a/src/AceTime.h +++ b/src/AceTime.h @@ -55,7 +55,7 @@ #include "ace_time/clock/SystemClockCoroutine.h" // Version format: xxyyzz == "xx.yy.zz" -#define ACE_TIME_VERSION 601 -#define ACE_TIME_VERSION_STRING "0.6.1" +#define ACE_TIME_VERSION 700 +#define ACE_TIME_VERSION_STRING "0.7" #endif From 44cdf7cc78fa543867f0fde8d464478f5cdce38a Mon Sep 17 00:00:00 2001 From: Brian Park Date: Tue, 13 Aug 2019 11:07:51 -0700 Subject: [PATCH 52/55] README.md: Simplify sentence --- README.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 11cf668d7..e9289c4e0 100644 --- a/README.md +++ b/README.md @@ -116,9 +116,8 @@ The library provides 2 sets of zoneinfo files created from the IANA TZ Database: the TZ Database (essentially the entire database) intended to be used with the `ExtendedZoneProcessor` class. -These zoneinfo files and the algorithms in this library (specifically -the `ZoneProcessor` classes) have been validated to match the UTC offsets -calculated using 3 other independent date/time libraries: +These zoneinfo files and the algorithms in this library have been validated to +match the UTC offsets calculated using 3 other date/time libraries: * the Python [pytz](https://pypi.org/project/pytz/) library from the year 2000 until 2037 (inclusive), From b710a960cfe6333a8e55839d5b7f89bee756cdcb Mon Sep 17 00:00:00 2001 From: Brian Park Date: Tue, 13 Aug 2019 11:08:53 -0700 Subject: [PATCH 53/55] docs: Regenerate doxygen docs for 0.7 --- docs/html/AceTime_8h_source.html | 4 +- docs/html/BasicZoneProcessor_8cpp_source.html | 2 +- docs/html/BasicZoneProcessor_8h_source.html | 26 ++-- docs/html/BasicZone_8h_source.html | 4 +- docs/html/Brokers_8h.html | 64 +++++++- docs/html/Brokers_8h__incl.map | 6 +- docs/html/Brokers_8h__incl.md5 | 2 +- docs/html/Brokers_8h__incl.png | Bin 28277 -> 32391 bytes docs/html/Brokers_8h_source.html | 24 +-- docs/html/Clock_8h_source.html | 2 +- docs/html/CrcEeprom_8h_source.html | 2 +- docs/html/DS3231Clock_8h_source.html | 18 +-- docs/html/DS3231_8cpp_source.html | 2 +- docs/html/DS3231_8h_source.html | 2 +- docs/html/DateStrings_8cpp_source.html | 2 +- docs/html/DateStrings_8h_source.html | 2 +- .../ExtendedZoneProcessor_8cpp_source.html | 5 +- .../html/ExtendedZoneProcessor_8h_source.html | 146 +++++++++--------- docs/html/ExtendedZone_8h_source.html | 4 +- docs/html/HardwareDateTime_8cpp_source.html | 2 +- docs/html/HardwareDateTime_8h_source.html | 2 +- docs/html/HardwareTemperature_8h_source.html | 2 +- docs/html/LocalDateTime_8cpp_source.html | 6 +- docs/html/LocalDateTime_8h_source.html | 58 +++---- docs/html/LocalDate_8cpp_source.html | 10 +- docs/html/LocalDate_8h_source.html | 32 ++-- docs/html/LocalTime_8cpp_source.html | 2 +- docs/html/LocalTime_8h_source.html | 2 +- docs/html/NtpClock_8cpp_source.html | 2 +- docs/html/NtpClock_8h_source.html | 2 +- docs/html/OffsetDateTime_8cpp_source.html | 4 +- docs/html/OffsetDateTime_8h_source.html | 84 +++++----- docs/html/README_8md_source.html | 2 +- docs/html/SystemClockCoroutine_8h_source.html | 2 +- docs/html/SystemClockLoop_8h_source.html | 2 +- docs/html/SystemClock_8h_source.html | 2 +- docs/html/TimeOffset_8cpp_source.html | 10 +- docs/html/TimeOffset_8h_source.html | 28 ++-- docs/html/TimePeriod_8cpp_source.html | 2 +- docs/html/TimePeriod_8h_source.html | 2 +- docs/html/TimeZoneData_8h_source.html | 8 +- docs/html/TimeZone_8cpp_source.html | 6 +- docs/html/TimeZone_8h_source.html | 24 +-- docs/html/TimingStats_8h_source.html | 2 +- docs/html/UnixClock_8h_source.html | 2 +- docs/html/ZoneContext_8h_source.html | 4 +- docs/html/ZoneContext_8inc_source.html | 4 +- docs/html/ZoneInfo_8h_source.html | 2 +- docs/html/ZoneInfo_8inc_source.html | 4 +- docs/html/ZoneManager_8h_source.html | 14 +- docs/html/ZonePolicy_8h_source.html | 4 +- docs/html/ZonePolicy_8inc_source.html | 4 +- docs/html/ZoneProcessorCache_8h_source.html | 8 +- docs/html/ZoneProcessor_8h_source.html | 4 +- docs/html/ZoneRegistrar_8h_source.html | 8 +- docs/html/ZonedDateTime_8cpp_source.html | 2 +- docs/html/ZonedDateTime_8h_source.html | 80 +++++----- docs/html/_2zone__infos_8cpp_source.html | 7 +- docs/html/_2zone__infos_8h_source.html | 4 +- docs/html/_2zone__policies_8cpp_source.html | 7 +- docs/html/_2zone__policies_8h_source.html | 4 +- docs/html/_2zone__registry_8cpp_source.html | 4 +- docs/html/_2zone__registry_8h_source.html | 4 +- docs/html/annotated.html | 8 +- .../classace__time_1_1BasicZone-members.html | 2 +- docs/html/classace__time_1_1BasicZone.html | 2 +- ...ace__time_1_1BasicZoneManager-members.html | 2 +- .../classace__time_1_1BasicZoneManager.html | 2 +- ...e__time_1_1BasicZoneProcessor-members.html | 2 +- .../classace__time_1_1BasicZoneProcessor.html | 6 +- ...me_1_1BasicZoneProcessorCache-members.html | 2 +- ...sace__time_1_1BasicZoneProcessorCache.html | 2 +- ...classace__time_1_1DateStrings-members.html | 2 +- docs/html/classace__time_1_1DateStrings.html | 2 +- ...lassace__time_1_1ExtendedZone-members.html | 2 +- docs/html/classace__time_1_1ExtendedZone.html | 2 +- ...__time_1_1ExtendedZoneManager-members.html | 2 +- ...classace__time_1_1ExtendedZoneManager.html | 2 +- ...time_1_1ExtendedZoneProcessor-members.html | 43 +++--- ...assace__time_1_1ExtendedZoneProcessor.html | 41 ++--- ...1_1ExtendedZoneProcessorCache-members.html | 2 +- ...e__time_1_1ExtendedZoneProcessorCache.html | 2 +- .../classace__time_1_1LocalDate-members.html | 2 +- docs/html/classace__time_1_1LocalDate.html | 30 ++-- ...assace__time_1_1LocalDateTime-members.html | 2 +- .../html/classace__time_1_1LocalDateTime.html | 42 ++--- .../classace__time_1_1LocalTime-members.html | 2 +- docs/html/classace__time_1_1LocalTime.html | 2 +- ...ssace__time_1_1OffsetDateTime-members.html | 2 +- .../classace__time_1_1OffsetDateTime.html | 48 +++--- .../classace__time_1_1TimeOffset-members.html | 29 ++-- docs/html/classace__time_1_1TimeOffset.html | 112 +++++++++----- .../classace__time_1_1TimePeriod-members.html | 2 +- docs/html/classace__time_1_1TimePeriod.html | 2 +- .../classace__time_1_1TimeZone-members.html | 6 +- docs/html/classace__time_1_1TimeZone.html | 12 +- ...classace__time_1_1ZoneManager-members.html | 2 +- docs/html/classace__time_1_1ZoneManager.html | 2 +- ...assace__time_1_1ZoneProcessor-members.html | 2 +- .../html/classace__time_1_1ZoneProcessor.html | 8 +- ...e__time_1_1ZoneProcessorCache-members.html | 2 +- .../classace__time_1_1ZoneProcessorCache.html | 2 +- ...ime_1_1ZoneProcessorCacheImpl-members.html | 2 +- ...ssace__time_1_1ZoneProcessorCacheImpl.html | 4 +- ..._time_1_1ZoneProcessor__inherit__graph.map | 2 +- ..._time_1_1ZoneProcessor__inherit__graph.md5 | 2 +- ...assace__time_1_1ZoneRegistrar-members.html | 2 +- .../html/classace__time_1_1ZoneRegistrar.html | 2 +- ...assace__time_1_1ZonedDateTime-members.html | 2 +- .../html/classace__time_1_1ZonedDateTime.html | 46 +++--- ...ssace__time_1_1clock_1_1Clock-members.html | 2 +- .../classace__time_1_1clock_1_1Clock.html | 2 +- ..._time_1_1clock_1_1DS3231Clock-members.html | 2 +- ...lassace__time_1_1clock_1_1DS3231Clock.html | 2 +- ...ce__time_1_1clock_1_1NtpClock-members.html | 2 +- .../classace__time_1_1clock_1_1NtpClock.html | 2 +- ..._time_1_1clock_1_1SystemClock-members.html | 2 +- ...lassace__time_1_1clock_1_1SystemClock.html | 2 +- ...clock_1_1SystemClockCoroutine-members.html | 2 +- ...time_1_1clock_1_1SystemClockCoroutine.html | 2 +- ...e_1_1clock_1_1SystemClockLoop-members.html | 2 +- ...ace__time_1_1clock_1_1SystemClockLoop.html | 2 +- ...time_1_1common_1_1TimingStats-members.html | 2 +- ...assace__time_1_1common_1_1TimingStats.html | 2 +- ...extended_1_1TransitionStorage-members.html | 55 +++---- ...time_1_1extended_1_1TransitionStorage.html | 41 ++--- ...sace__time_1_1hw_1_1CrcEeprom-members.html | 2 +- .../classace__time_1_1hw_1_1CrcEeprom.html | 2 +- ...lassace__time_1_1hw_1_1DS3231-members.html | 2 +- docs/html/classace__time_1_1hw_1_1DS3231.html | 2 +- ...ternal_1_1DirectZoneEraBroker-members.html | 4 +- ...me_1_1internal_1_1DirectZoneEraBroker.html | 10 +- ...ernal_1_1DirectZoneInfoBroker-members.html | 2 +- ...e_1_1internal_1_1DirectZoneInfoBroker.html | 4 +- ...nal_1_1DirectZonePolicyBroker-members.html | 2 +- ...1_1internal_1_1DirectZonePolicyBroker.html | 4 +- ...l_1_1DirectZoneRegistryBroker-members.html | 2 +- ...1internal_1_1DirectZoneRegistryBroker.html | 4 +- ...ernal_1_1DirectZoneRuleBroker-members.html | 4 +- ...e_1_1internal_1_1DirectZoneRuleBroker.html | 10 +- ...nternal_1_1FlashZoneEraBroker-members.html | 4 +- ...ime_1_1internal_1_1FlashZoneEraBroker.html | 10 +- ...ternal_1_1FlashZoneInfoBroker-members.html | 2 +- ...me_1_1internal_1_1FlashZoneInfoBroker.html | 4 +- ...rnal_1_1FlashZonePolicyBroker-members.html | 2 +- ..._1_1internal_1_1FlashZonePolicyBroker.html | 4 +- ...al_1_1FlashZoneRegistryBroker-members.html | 2 +- ..._1internal_1_1FlashZoneRegistryBroker.html | 4 +- ...ternal_1_1FlashZoneRuleBroker-members.html | 4 +- ...me_1_1internal_1_1FlashZoneRuleBroker.html | 10 +- docs/html/classes.html | 2 +- docs/html/common_8h_source.html | 2 +- docs/html/compat_8cpp_source.html | 2 +- docs/html/compat_8h.html | 4 +- docs/html/compat_8h_source.html | 2 +- docs/html/dir_000001_000003.html | 2 +- docs/html/dir_000001_000005.html | 2 +- docs/html/dir_000002_000003.html | 2 +- docs/html/dir_000005_000003.html | 2 +- docs/html/dir_000006_000003.html | 2 +- docs/html/dir_000007_000003.html | 2 +- .../dir_173dd563440c1e02d7e3957b90659cd7.html | 2 +- .../dir_1a3db1509c5a81eeb8e8fbfe5ac0febc.html | 2 +- .../dir_50235a35a18cf9820d15ab2ee5526aee.html | 2 +- .../dir_68267d1309a1af8e8297ef4c3efbcdba.html | 2 +- .../dir_710a5327734d15938c9752b39a7d94e5.html | 2 +- .../dir_a39208a208c368a08eb059033749c10e.html | 2 +- .../dir_afb2025690de77b1a5b5001a410c869c.html | 2 +- .../dir_b09928b61a970651c46b44aee9ef9d8f.html | 2 +- docs/html/files.html | 2 +- docs/html/functions.html | 2 +- docs/html/functions_0x7e.html | 2 +- docs/html/functions_b.html | 2 +- docs/html/functions_c.html | 2 +- docs/html/functions_d.html | 2 +- docs/html/functions_e.html | 2 +- docs/html/functions_f.html | 8 +- docs/html/functions_func.html | 2 +- docs/html/functions_func_0x7e.html | 2 +- docs/html/functions_func_b.html | 2 +- docs/html/functions_func_c.html | 2 +- docs/html/functions_func_d.html | 2 +- docs/html/functions_func_e.html | 2 +- docs/html/functions_func_f.html | 8 +- docs/html/functions_func_g.html | 2 +- docs/html/functions_func_h.html | 2 +- docs/html/functions_func_i.html | 2 +- docs/html/functions_func_k.html | 2 +- docs/html/functions_func_l.html | 2 +- docs/html/functions_func_m.html | 2 +- docs/html/functions_func_n.html | 2 +- docs/html/functions_func_o.html | 2 +- docs/html/functions_func_p.html | 2 +- docs/html/functions_func_r.html | 2 +- docs/html/functions_func_s.html | 2 +- docs/html/functions_func_t.html | 4 +- docs/html/functions_func_w.html | 2 +- docs/html/functions_func_y.html | 2 +- docs/html/functions_func_z.html | 2 +- docs/html/functions_g.html | 2 +- docs/html/functions_h.html | 2 +- docs/html/functions_i.html | 2 +- docs/html/functions_k.html | 5 +- docs/html/functions_l.html | 2 +- docs/html/functions_m.html | 2 +- docs/html/functions_n.html | 2 +- docs/html/functions_o.html | 2 +- docs/html/functions_p.html | 2 +- docs/html/functions_r.html | 2 +- docs/html/functions_rela.html | 2 +- docs/html/functions_s.html | 2 +- docs/html/functions_t.html | 18 ++- docs/html/functions_u.html | 2 +- docs/html/functions_vars.html | 17 +- docs/html/functions_w.html | 2 +- docs/html/functions_y.html | 2 +- docs/html/functions_z.html | 2 +- docs/html/globals.html | 2 +- docs/html/globals_defs.html | 2 +- docs/html/globals_func.html | 2 +- docs/html/graph_legend.html | 2 +- docs/html/hierarchy.html | 8 +- docs/html/index.html | 2 +- docs/html/inherit_graph_11.map | 2 +- docs/html/inherit_graph_11.md5 | 2 +- docs/html/inherit_graph_52.map | 2 +- docs/html/inherit_graph_52.md5 | 2 +- docs/html/inherits.html | 6 +- .../html/local__date__mutation_8h_source.html | 2 +- docs/html/logging_8h_source.html | 2 +- ..._AceTime_src_ace_time_internal_README.html | 2 +- docs/html/pages.html | 2 +- docs/html/search/all_11.js | 7 +- docs/html/search/all_5.js | 2 +- docs/html/search/all_9.js | 1 + docs/html/search/functions_11.js | 4 +- docs/html/search/functions_5.js | 2 +- docs/html/search/variables_5.js | 1 + docs/html/search/variables_c.js | 3 + ...ructace__time_1_1TimeZoneData-members.html | 6 +- .../html/structace__time_1_1TimeZoneData.html | 22 +-- ...ce__time_1_1basic_1_1MonthDay-members.html | 2 +- .../structace__time_1_1basic_1_1MonthDay.html | 2 +- ...__time_1_1basic_1_1Transition-members.html | 2 +- ...tructace__time_1_1basic_1_1Transition.html | 2 +- ..._time_1_1basic_1_1ZoneContext-members.html | 9 +- ...ructace__time_1_1basic_1_1ZoneContext.html | 99 +++++++++++- ...ace__time_1_1basic_1_1ZoneEra-members.html | 2 +- .../structace__time_1_1basic_1_1ZoneEra.html | 12 +- ...ce__time_1_1basic_1_1ZoneInfo-members.html | 2 +- .../structace__time_1_1basic_1_1ZoneInfo.html | 18 +-- ...__time_1_1basic_1_1ZonePolicy-members.html | 2 +- ...tructace__time_1_1basic_1_1ZonePolicy.html | 4 +- ...ce__time_1_1basic_1_1ZoneRule-members.html | 2 +- .../structace__time_1_1basic_1_1ZoneRule.html | 31 +++- ...time_1_1extended_1_1DateTuple-members.html | 10 +- ...uctace__time_1_1extended_1_1DateTuple.html | 18 ++- ...ime_1_1extended_1_1Transition-members.html | 2 +- ...ctace__time_1_1extended_1_1Transition.html | 40 ++--- ...1_1extended_1_1Transition__coll__graph.map | 2 +- ...1_1extended_1_1Transition__coll__graph.md5 | 2 +- ...1_1extended_1_1YearMonthTuple-members.html | 2 +- ...e__time_1_1extended_1_1YearMonthTuple.html | 4 +- ...me_1_1extended_1_1ZoneContext-members.html | 9 +- ...tace__time_1_1extended_1_1ZoneContext.html | 99 +++++++++++- ...__time_1_1extended_1_1ZoneEra-members.html | 2 +- ...tructace__time_1_1extended_1_1ZoneEra.html | 12 +- ..._time_1_1extended_1_1ZoneInfo-members.html | 2 +- ...ructace__time_1_1extended_1_1ZoneInfo.html | 18 +-- ...time_1_1extended_1_1ZoneMatch-members.html | 2 +- ...uctace__time_1_1extended_1_1ZoneMatch.html | 12 +- ..._1_1extended_1_1ZoneMatch__coll__graph.map | 2 +- ..._1_1extended_1_1ZoneMatch__coll__graph.md5 | 2 +- ...ime_1_1extended_1_1ZonePolicy-members.html | 2 +- ...ctace__time_1_1extended_1_1ZonePolicy.html | 4 +- ..._time_1_1extended_1_1ZoneRule-members.html | 2 +- ...ructace__time_1_1extended_1_1ZoneRule.html | 31 +++- ...ime_1_1hw_1_1HardwareDateTime-members.html | 2 +- ...ctace__time_1_1hw_1_1HardwareDateTime.html | 2 +- ..._1_1hw_1_1HardwareTemperature-members.html | 2 +- ...ce__time_1_1hw_1_1HardwareTemperature.html | 2 +- .../time__offset__mutation_8h_source.html | 4 +- .../time__period__mutation_8h_source.html | 2 +- docs/html/util_8h_source.html | 2 +- docs/html/zone__infos_8cpp_source.html | 5 +- docs/html/zone__infos_8h_source.html | 4 +- docs/html/zone__policies_8cpp_source.html | 7 +- docs/html/zone__policies_8h_source.html | 4 +- docs/html/zone__registry_8cpp_source.html | 4 +- docs/html/zone__registry_8h_source.html | 4 +- ...zoned__date__time__mutation_8h_source.html | 2 +- 291 files changed, 1350 insertions(+), 946 deletions(-) diff --git a/docs/html/AceTime_8h_source.html b/docs/html/AceTime_8h_source.html index e5cc66e67..d45d16ebf 100644 --- a/docs/html/AceTime_8h_source.html +++ b/docs/html/AceTime_8h_source.html @@ -22,7 +22,7 @@
AceTime -  0.6.1 +  0.7
Date and time classes for Arduino that support timezones from the TZ Database, and a system clock that can synchronize from an NTP server or an RTC chip.
@@ -68,7 +68,7 @@
AceTime.h
-
1 /*
2  * MIT License
3  * Copyright (c) 2018 Brian T. Park
4  */
5 
13 #ifndef ACE_TIME_ACE_TIME_H
14 #define ACE_TIME_ACE_TIME_H
15 
16 #include "ace_time/common/compat.h"
17 #include "ace_time/common/common.h"
18 #include "ace_time/common/DateStrings.h"
19 #include "ace_time/internal/ZoneContext.h"
20 #include "ace_time/internal/ZoneInfo.h"
21 #include "ace_time/internal/ZonePolicy.h"
22 #include "ace_time/zonedb/zone_policies.h"
23 #include "ace_time/zonedb/zone_infos.h"
24 #include "ace_time/zonedb/zone_registry.h"
25 #include "ace_time/zonedbx/zone_policies.h"
26 #include "ace_time/zonedbx/zone_infos.h"
27 #include "ace_time/zonedbx/zone_registry.h"
28 #include "ace_time/ZoneRegistrar.h"
29 #include "ace_time/LocalDate.h"
30 #include "ace_time/local_date_mutation.h"
31 #include "ace_time/LocalTime.h"
32 #include "ace_time/LocalDateTime.h"
33 #include "ace_time/TimeOffset.h"
34 #include "ace_time/time_offset_mutation.h"
35 #include "ace_time/OffsetDateTime.h"
36 #include "ace_time/ZoneProcessor.h"
37 #include "ace_time/BasicZoneProcessor.h"
38 #include "ace_time/ExtendedZoneProcessor.h"
39 #include "ace_time/ZoneProcessorCache.h"
40 #include "ace_time/ZoneManager.h"
41 #include "ace_time/TimeZoneData.h"
42 #include "ace_time/TimeZone.h"
43 #include "ace_time/BasicZone.h"
44 #include "ace_time/ExtendedZone.h"
45 #include "ace_time/ZonedDateTime.h"
46 #include "ace_time/zoned_date_time_mutation.h"
47 #include "ace_time/TimePeriod.h"
48 #include "ace_time/time_period_mutation.h"
49 #include "ace_time/clock/Clock.h"
50 #include "ace_time/clock/NtpClock.h"
51 #include "ace_time/clock/DS3231Clock.h"
52 #include "ace_time/clock/UnixClock.h"
53 #include "ace_time/clock/SystemClock.h"
54 #include "ace_time/clock/SystemClockLoop.h"
55 #include "ace_time/clock/SystemClockCoroutine.h"
56 
57 // Version format: xxyyzz == "xx.yy.zz"
58 #define ACE_TIME_VERSION 601
59 #define ACE_TIME_VERSION_STRING "0.6.1"
60 
61 #endif
Macros and definitions that provide a consistency layer among the various Arduino boards for compatib...
+
1 /*
2  * MIT License
3  * Copyright (c) 2018 Brian T. Park
4  */
5 
13 #ifndef ACE_TIME_ACE_TIME_H
14 #define ACE_TIME_ACE_TIME_H
15 
16 #include "ace_time/common/compat.h"
17 #include "ace_time/common/common.h"
18 #include "ace_time/common/DateStrings.h"
19 #include "ace_time/internal/ZoneContext.h"
20 #include "ace_time/internal/ZoneInfo.h"
21 #include "ace_time/internal/ZonePolicy.h"
22 #include "ace_time/zonedb/zone_policies.h"
23 #include "ace_time/zonedb/zone_infos.h"
24 #include "ace_time/zonedb/zone_registry.h"
25 #include "ace_time/zonedbx/zone_policies.h"
26 #include "ace_time/zonedbx/zone_infos.h"
27 #include "ace_time/zonedbx/zone_registry.h"
28 #include "ace_time/ZoneRegistrar.h"
29 #include "ace_time/LocalDate.h"
30 #include "ace_time/local_date_mutation.h"
31 #include "ace_time/LocalTime.h"
32 #include "ace_time/LocalDateTime.h"
33 #include "ace_time/TimeOffset.h"
34 #include "ace_time/time_offset_mutation.h"
35 #include "ace_time/OffsetDateTime.h"
36 #include "ace_time/ZoneProcessor.h"
37 #include "ace_time/BasicZoneProcessor.h"
38 #include "ace_time/ExtendedZoneProcessor.h"
39 #include "ace_time/ZoneProcessorCache.h"
40 #include "ace_time/ZoneManager.h"
41 #include "ace_time/TimeZoneData.h"
42 #include "ace_time/TimeZone.h"
43 #include "ace_time/BasicZone.h"
44 #include "ace_time/ExtendedZone.h"
45 #include "ace_time/ZonedDateTime.h"
46 #include "ace_time/zoned_date_time_mutation.h"
47 #include "ace_time/TimePeriod.h"
48 #include "ace_time/time_period_mutation.h"
49 #include "ace_time/clock/Clock.h"
50 #include "ace_time/clock/NtpClock.h"
51 #include "ace_time/clock/DS3231Clock.h"
52 #include "ace_time/clock/UnixClock.h"
53 #include "ace_time/clock/SystemClock.h"
54 #include "ace_time/clock/SystemClockLoop.h"
55 #include "ace_time/clock/SystemClockCoroutine.h"
56 
57 // Version format: xxyyzz == "xx.yy.zz"
58 #define ACE_TIME_VERSION 700
59 #define ACE_TIME_VERSION_STRING "0.7"
60 
61 #endif
Macros and definitions that provide a consistency layer among the various Arduino boards for compatib...
-
1 /*
2  * MIT License
3  * Copyright (c) 2019 Brian T. Park
4  */
5 
6 #ifndef ACE_TIME_BASIC_ZONE_PROCESSOR_H
7 #define ACE_TIME_BASIC_ZONE_PROCESSOR_H
8 
9 #include <string.h> // strchr()
10 #include <stdint.h>
11 #include "internal/ZonePolicy.h"
12 #include "internal/ZoneInfo.h"
13 #include "internal/Brokers.h"
14 #include "common/logging.h"
15 #include "TimeOffset.h"
16 #include "LocalDate.h"
17 #include "OffsetDateTime.h"
18 #include "ZoneProcessor.h"
19 
20 #define ACE_TIME_BASIC_ZONE_PROCESSOR_DEBUG 0
21 
22 class BasicZoneProcessorTest_init_primitives;
23 class BasicZoneProcessorTest_init;
24 class BasicZoneProcessorTest_setZoneInfo;
25 class BasicZoneProcessorTest_createAbbreviation;
26 class BasicZoneProcessorTest_calcStartDayOfMonth;
27 class BasicZoneProcessorTest_calcRuleOffsetCode;
28 
29 namespace ace_time {
30 
31 template<uint8_t SIZE, uint8_t TYPE, typename ZS, typename ZI, typename ZIB>
33 
34 namespace basic {
35 
51 struct Transition {
59  static const uint8_t kAbbrevSize = 6 + 1;
60 
67 
79 
81  acetime_t startEpochSeconds;
82 
84  int8_t yearTiny;
85 
91  int8_t offsetCode;
92 
94  int8_t deltaCode;
95 
104 
106  void log() const {
107  if (ACE_TIME_BASIC_ZONE_PROCESSOR_DEBUG) {
108  if (sizeof(acetime_t) == sizeof(int)) {
109  logging::printf("startEpochSeconds: %d\n", startEpochSeconds);
110  } else {
111  logging::printf("startEpochSeconds: %ld\n", startEpochSeconds);
112  }
113  logging::printf("offsetCode: %d\n", offsetCode);
114  logging::printf("abbrev: %s\n", abbrev);
115  if (rule.isNotNull()) {
116  logging::printf("Rule.fromYear: %d\n", rule.fromYearTiny());
117  logging::printf("Rule.toYear: %d\n", rule.toYearTiny());
118  logging::printf("Rule.inMonth: %d\n", rule.inMonth());
119  logging::printf("Rule.onDayOfMonth: %d\n", rule.onDayOfMonth());
120  }
121  }
122  }
123 };
124 
126 struct MonthDay {
127  uint8_t month;
128  uint8_t day;
129 };
130 
131 } // namespace basic
132 
185  public:
190  explicit BasicZoneProcessor(const basic::ZoneInfo* zoneInfo = nullptr):
191  ZoneProcessor(kTypeBasic),
192  mZoneInfo(zoneInfo) {}
193 
195  const void* getZoneInfo() const override {
196  return mZoneInfo.zoneInfo();
197  }
198 
199  uint32_t getZoneId() const override { return mZoneInfo.zoneId(); }
200 
201  TimeOffset getUtcOffset(acetime_t epochSeconds) const override {
202  const basic::Transition* transition = getTransition(epochSeconds);
203  int8_t code = (transition)
204  ? transition->offsetCode : TimeOffset::kErrorCode;
205  return TimeOffset::forOffsetCode(code);
206  }
207 
208  TimeOffset getDeltaOffset(acetime_t epochSeconds) const override {
209  const basic::Transition* transition = getTransition(epochSeconds);
210  int8_t code = (transition)
211  ? transition->deltaCode : TimeOffset::kErrorCode;
212  return TimeOffset::forOffsetCode(code);
213  }
214 
215  const char* getAbbrev(acetime_t epochSeconds) const override {
216  const basic::Transition* transition = getTransition(epochSeconds);
217  return (transition) ? transition->abbrev : "";
218  }
219 
249  OffsetDateTime getOffsetDateTime(const LocalDateTime& ldt) const override {
250  // Only a single local variable of OffsetDateTime used, to allow Return
251  // Value Optimization (and save 20 bytes of flash for WorldClock).
252  OffsetDateTime odt;
253  bool success = init(ldt.localDate());
254  if (success) {
255  // 0) Use the UTC epochSeconds to get intial guess of offset.
256  acetime_t epochSeconds0 = ldt.toEpochSeconds();
257  auto offset0 = getUtcOffset(epochSeconds0);
258 
259  // 1) Use offset0 to get the next epochSeconds and offset.
260  odt = OffsetDateTime::forLocalDateTimeAndOffset(ldt, offset0);
261  acetime_t epochSeconds1 = odt.toEpochSeconds();
262  auto offset1 = getUtcOffset(epochSeconds1);
263 
264  // 2) Use offset1 to get the next epochSeconds and offset.
265  odt = OffsetDateTime::forLocalDateTimeAndOffset(ldt, offset1);
266  acetime_t epochSeconds2 = odt.toEpochSeconds();
267  auto offset2 = getUtcOffset(epochSeconds2);
268 
269  // If offset1 and offset2 are equal, then we have an equilibrium
270  // and odt(1) must equal odt(2), so we can just return the last odt.
271  if (offset1.toOffsetCode() == offset2.toOffsetCode()) {
272  // pass
273  } else {
274  // Pick the later epochSeconds and offset
275  acetime_t epochSeconds;
276  TimeOffset offset;
277  if (epochSeconds1 > epochSeconds2) {
278  epochSeconds = epochSeconds1;
279  offset = offset1;
280  } else {
281  epochSeconds = epochSeconds2;
282  offset = offset2;
283  }
284  odt = OffsetDateTime::forEpochSeconds(epochSeconds, offset);
285  }
286  } else {
287  odt = OffsetDateTime::forError();
288  }
289 
290  return odt;
291  }
292 
293  void printTo(Print& printer) const override;
294 
295  void printShortTo(Print& printer) const override;
296 
298  void log() const {
299  if (ACE_TIME_BASIC_ZONE_PROCESSOR_DEBUG) {
300  if (!mIsFilled) {
301  logging::printf("*not initialized*\n");
302  return;
303  }
304  logging::printf("mYear: %d\n", mYear);
305  logging::printf("mNumTransitions: %d\n", mNumTransitions);
306  logging::printf("---- PrevTransition\n");
307  mPrevTransition.log();
308  for (int i = 0; i < mNumTransitions; i++) {
309  logging::printf("---- Transition: %d\n", i);
310  mTransitions[i].log();
311  }
312  }
313  }
314 
333  static basic::MonthDay calcStartDayOfMonth(int16_t year, uint8_t month,
334  uint8_t onDayOfWeek, int8_t onDayOfMonth) {
335  if (onDayOfWeek == 0) return {month, (uint8_t) onDayOfMonth};
336 
337  if (onDayOfMonth >= 0) {
338  // Convert "last{Xxx}" to "last{Xxx}>={daysInMonth-6}".
339  uint8_t daysInMonth = LocalDate::daysInMonth(year, month);
340  if (onDayOfMonth == 0) {
341  onDayOfMonth = daysInMonth - 6;
342  }
343 
344  auto limitDate = LocalDate::forComponents(year, month, onDayOfMonth);
345  uint8_t dayOfWeekShift = (onDayOfWeek - limitDate.dayOfWeek() + 7) % 7;
346  uint8_t day = (uint8_t) (onDayOfMonth + dayOfWeekShift);
347  if (day > daysInMonth) {
348  // TODO: Support shifting from Dec to Jan of following year.
349  day -= daysInMonth;
350  month++;
351  }
352  return {month, day};
353  } else {
354  onDayOfMonth = -onDayOfMonth;
355  auto limitDate = LocalDate::forComponents(year, month, onDayOfMonth);
356  int8_t dayOfWeekShift = (limitDate.dayOfWeek() - onDayOfWeek + 7) % 7;
357  int8_t day = onDayOfMonth - dayOfWeekShift;
358  if (day < 1) {
359  // TODO: Support shifting from Jan to Dec of the previous year.
360  month--;
361  uint8_t daysInPrevMonth = LocalDate::daysInMonth(year, month);
362  day += daysInPrevMonth;
363  }
364  return {month, (uint8_t) day};
365  }
366  }
367 
368  private:
369  friend class ::BasicZoneProcessorTest_init_primitives;
370  friend class ::BasicZoneProcessorTest_init;
371  friend class ::BasicZoneProcessorTest_setZoneInfo;
372  friend class ::BasicZoneProcessorTest_createAbbreviation;
373  friend class ::BasicZoneProcessorTest_calcStartDayOfMonth;
374  friend class ::BasicZoneProcessorTest_calcRuleOffsetCode;
375 
376  template<uint8_t SIZE, uint8_t TYPE, typename ZS, typename ZI, typename ZIB>
377  friend class ZoneProcessorCacheImpl; // setZoneInfo()
378 
380  static const uint8_t kMaxCacheEntries = 4;
381 
387  static const acetime_t kMinEpochSeconds = INT32_MIN + 1;
388 
389  // Disable copy constructor and assignment operator.
390  BasicZoneProcessor(const BasicZoneProcessor&) = delete;
391  BasicZoneProcessor& operator=(const BasicZoneProcessor&) = delete;
392 
393  bool equals(const ZoneProcessor& other) const override {
394  const auto& that = (const BasicZoneProcessor&) other;
395  return getZoneInfo() == that.getZoneInfo();
396  }
397 
399  void setZoneInfo(const void* zoneInfo) override {
400  if (mZoneInfo.zoneInfo() == zoneInfo) return;
401 
402  mZoneInfo = basic::ZoneInfoBroker((const basic::ZoneInfo*) zoneInfo);
403  mYear = 0;
404  mIsFilled = false;
405  mNumTransitions = 0;
406  }
407 
409  const basic::Transition* getTransition(acetime_t epochSeconds) const {
410  LocalDate ld = LocalDate::forEpochSeconds(epochSeconds);
411  bool success = init(ld);
412  return (success) ? findMatch(epochSeconds) : nullptr;
413  }
414 
443  bool init(const LocalDate& ld) const {
444  int16_t year = ld.year();
445  if (ld.month() == 1 && ld.day() == 1) {
446  year--;
447  }
448  if (isFilled(year)) return true;
449 
450  mYear = year;
451  mNumTransitions = 0; // clear cache
452 
453  if (year < mZoneInfo.startYear() - 1 || mZoneInfo.untilYear() < year) {
454  return false;
455  }
456 
457  addRulePriorToYear(year);
458  addRulesForYear(year);
459  calcTransitions();
460  calcAbbreviations();
461 
462  mIsFilled = true;
463  return true;
464  }
465 
467  bool isFilled(int16_t year) const {
468  return mIsFilled && (year == mYear);
469  }
470 
475  void addRulePriorToYear(int16_t year) const {
476  int8_t yearTiny = year - LocalDate::kEpochYear;
477  int8_t priorYearTiny = yearTiny - 1;
478 
479  // Find the prior Era.
480  const basic::ZoneEraBroker era = findZoneEraPriorTo(year);
481 
482  // If the prior ZoneEra is a simple Era (no zone policy), then create a
483  // Transition using a rule==nullptr. Otherwise, find the latest rule
484  // within the ZoneEra.
485  const basic::ZonePolicyBroker zonePolicy = era.zonePolicy();
486  basic::ZoneRuleBroker latest;
487  if (zonePolicy.isNotNull()) {
488  // Find the latest rule for the matching ZoneEra whose
489  // ZoneRule::toYearTiny < yearTiny. Assume that there are no more than
490  // 1 rule per month.
491  uint8_t numRules = zonePolicy.numRules();
492  for (uint8_t i = 0; i < numRules; i++) {
493  const basic::ZoneRuleBroker rule = zonePolicy.rule(i);
494  // Check if rule is effective prior to the given year
495  if (rule.fromYearTiny() < yearTiny) {
496  if ((latest.isNull()) || compareZoneRule(year, rule, latest) > 0) {
497  latest = rule;
498  }
499  }
500  }
501  }
502 
503  mPrevTransition = createTransition(era, latest, priorYearTiny);
504  }
505 
511  static basic::Transition createTransition(basic::ZoneEraBroker era,
513  int8_t offsetCode;
514  int8_t deltaCode;
515  char letter;
516  if (rule.isNull()) {
517  deltaCode = 0;
518  offsetCode = era.offsetCode();
519  letter = 0;
520  } else {
521  deltaCode = rule.deltaCode();
522  offsetCode = era.offsetCode() + deltaCode;
523  letter = rule.letter();
524  }
525 
526  return {
527  era,
528  rule,
529  0 /*epochSeconds*/,
530  yearTiny,
531  offsetCode,
532  deltaCode,
533  {letter} /*abbrev*/
534  };
535  }
536 
538  static int8_t compareZoneRule(int16_t year,
539  const basic::ZoneRuleBroker a, const basic::ZoneRuleBroker b) {
540  int16_t aYear = effectiveRuleYear(year, a);
541  int16_t bYear = effectiveRuleYear(year, b);
542  if (aYear < bYear) return -1;
543  if (aYear > bYear) return 1;
544  if (a.inMonth() < b.inMonth()) return -1;
545  if (a.inMonth() > b.inMonth()) return 1;
546  return 0;
547  }
548 
553  static int16_t effectiveRuleYear(int16_t year,
554  const basic::ZoneRuleBroker rule) {
555  int8_t yearTiny = year - LocalDate::kEpochYear;
556  if (rule.toYearTiny() < yearTiny) {
557  return rule.toYearTiny() + LocalDate::kEpochYear;
558  }
559  if (rule.fromYearTiny() < yearTiny) {
560  return year - 1;
561  }
562  return 0;
563  }
564 
566  void addRulesForYear(int16_t year) const {
567  const basic::ZoneEraBroker era = findZoneEra(year);
568 
569  // If the ZonePolicy has no rules, then add a Transition which takes
570  // effect at the start time of the current year.
571  const basic::ZonePolicyBroker zonePolicy = era.zonePolicy();
572  if (zonePolicy.isNull()) {
573  addRule(year, era, basic::ZoneRuleBroker());
574  return;
575  }
576 
577  // If the ZonePolicy has rules, find all matching transitions, and add
578  // them to mTransitions, in sorted order according to the
579  // ZoneRule::inMonth field.
580  int8_t yearTiny = year - LocalDate::kEpochYear;
581  uint8_t numRules = zonePolicy.numRules();
582  for (uint8_t i = 0; i < numRules; i++) {
583  const basic::ZoneRuleBroker rule = zonePolicy.rule(i);
584  if ((rule.fromYearTiny() <= yearTiny) &&
585  (yearTiny <= rule.toYearTiny())) {
586  addRule(year, era, rule);
587  }
588  }
589  }
590 
605  void addRule(int16_t year, basic::ZoneEraBroker era,
606  basic::ZoneRuleBroker rule) const {
607 
608  // If a zone needs more transitions than kMaxCacheEntries, the check below
609  // will cause the DST transition information to be inaccurate, and it is
610  // highly likely that this situation would be caught in the
611  // BasicValidationUsingPython or BasicValidationUsingJava unit tests.
612  // Since these unit tests pass, I feel confident that those zones which
613  // need more than kMaxCacheEntries are already filtered out by
614  // tzcompiler.py.
615  //
616  // Ideally, the tzcompiler.py script would explicitly remove those zones
617  // which need more than kMaxCacheEntries Transitions. But this would
618  // require a Python version of the BasicZoneProcessor, and unfortunately,
619  // zone_specifier.py implements only the ExtendedZoneProcessor algorithm
620  // An early version of zone_specifier.py may have implemented something
621  // close to BasicZoneProcessor, and it may be available in the git
622  // history. But it seems like too much work right now to try to dig that
623  // out, just to implement the explicit check for kMaxCacheEntries. It
624  // would mean maintaining another version of zone_specifier.py.
625  if (mNumTransitions >= kMaxCacheEntries) return;
626 
627  // insert new element at the end of the list
628  int8_t yearTiny = year - LocalDate::kEpochYear;
629  mTransitions[mNumTransitions] = createTransition(era, rule, yearTiny);
630  mNumTransitions++;
631 
632  // perform an insertion sort
633  for (uint8_t i = mNumTransitions - 1; i > 0; i--) {
634  basic::Transition& left = mTransitions[i - 1];
635  basic::Transition& right = mTransitions[i];
636  // assume only 1 rule per month
637  if ((left.rule.isNotNull() && right.rule.isNotNull() &&
638  left.rule.inMonth() > right.rule.inMonth())
639  || (left.rule.isNotNull() && right.rule.isNull())) {
640  basic::Transition tmp = left;
641  left = right;
642  right = tmp;
643  }
644  }
645  }
646 
652  const basic::ZoneEraBroker findZoneEra(int16_t year) const {
653  for (uint8_t i = 0; i < mZoneInfo.numEras(); i++) {
654  const basic::ZoneEraBroker era = mZoneInfo.era(i);
655  if (year < era.untilYearTiny() + LocalDate::kEpochYear) return era;
656  }
657  // Return the last ZoneEra if we run off the end.
658  return mZoneInfo.era(mZoneInfo.numEras() - 1);
659  }
660 
672  const basic::ZoneEraBroker findZoneEraPriorTo(int16_t year) const {
673  for (uint8_t i = 0; i < mZoneInfo.numEras(); i++) {
674  const basic::ZoneEraBroker era = mZoneInfo.era(i);
675  if (year <= era.untilYearTiny() + LocalDate::kEpochYear) return era;
676  }
677  // Return the last ZoneEra if we run off the end.
678  return mZoneInfo.era(mZoneInfo.numEras() - 1);
679  }
680 
688  void calcTransitions() const {
689  // Set the initial startEpochSeconds to be -Infinity
690  mPrevTransition.startEpochSeconds = kMinEpochSeconds;
691  const basic::Transition* prevTransition = &mPrevTransition;
692 
693  for (uint8_t i = 0; i < mNumTransitions; i++) {
694  basic::Transition& transition = mTransitions[i];
695  const int16_t year = transition.yearTiny + LocalDate::kEpochYear;
696 
697  if (transition.rule.isNull()) {
698  // If the transition is simple (has no named rule), then the
699  // ZoneEra applies for the entire year (since BasicZoneProcessor
700  // supports only whole year in the UNTIL field). The whole year UNTIL
701  // field has an implied 'w' modifier on 00:00, we don't need to call
702  // calcRuleOffsetCode() with a 'w', we can just use the previous
703  // transition's offset to calculate the startDateTime of this
704  // transition.
705  //
706  // Also, when transition.rule == nullptr, the mNumTransitions should
707  // be 1, since only a single transition is added by
708  // addRulesForYear().
709  const int8_t prevOffsetCode = prevTransition->offsetCode;
711  year, 1, 1, 0, 0, 0,
712  TimeOffset::forOffsetCode(prevOffsetCode));
713  transition.startEpochSeconds = startDateTime.toEpochSeconds();
714  } else {
715  // In this case, the transition points to a named ZonePolicy, which
716  // means that there could be multiple ZoneRules associated with the
717  // given year. For each transition, determine the startEpochSeconds,
718  // and the effective offset code.
719 
720  // Determine the start date of the rule.
721  const basic::MonthDay monthDay = calcStartDayOfMonth(
722  year, transition.rule.inMonth(), transition.rule.onDayOfWeek(),
723  transition.rule.onDayOfMonth());
724 
725  // Determine the offset of the 'atTimeModifier'. The 'w' modifier
726  // requires the offset of the previous transition.
727  const int8_t prevOffsetCode = calcRuleOffsetCode(
728  prevTransition->offsetCode,
729  transition.era.offsetCode(),
730  transition.rule.atTimeModifier());
731 
732  // startDateTime
733  const uint8_t timeCode = transition.rule.atTimeCode();
734  const uint8_t atHour = timeCode / 4;
735  const uint8_t atMinute = (timeCode % 4) * 15;
737  year, monthDay.month, monthDay.day,
738  atHour, atMinute, 0 /*second*/,
739  TimeOffset::forOffsetCode(prevOffsetCode));
740  transition.startEpochSeconds = startDateTime.toEpochSeconds();
741  }
742 
743  prevTransition = &transition;
744  }
745  }
746 
753  static int8_t calcRuleOffsetCode(int8_t prevEffectiveOffsetCode,
754  int8_t currentBaseOffsetCode, uint8_t atModifier) {
755  if (atModifier == 'w') {
756  return prevEffectiveOffsetCode;
757  } else if (atModifier == 's') {
758  return currentBaseOffsetCode;
759  } else { // 'u', 'g' or 'z'
760  return 0;
761  }
762  }
763 
765  void calcAbbreviations() const {
766  calcAbbreviation(&mPrevTransition);
767  for (uint8_t i = 0; i < mNumTransitions; i++) {
768  calcAbbreviation(&mTransitions[i]);
769  }
770  }
771 
773  static void calcAbbreviation(basic::Transition* transition) {
774  createAbbreviation(
775  transition->abbrev,
777  transition->era.format(),
778  transition->deltaCode,
779  transition->abbrev[0]);
780  }
781 
817  static void createAbbreviation(char* dest, uint8_t destSize,
818  const char* format, uint8_t deltaCode, char letter) {
819  // Check if RULES column empty.
820  if (deltaCode == 0 && letter == '\0') {
821  strncpy(dest, format, destSize);
822  dest[destSize - 1] = '\0';
823  return;
824  }
825 
826  // Check if FORMAT contains a '%'.
827  if (strchr(format, '%') != nullptr) {
828  copyAndReplace(dest, destSize, format, '%', letter);
829  } else {
830  // Check if FORMAT contains a '/'.
831  const char* slashPos = strchr(format, '/');
832  if (slashPos != nullptr) {
833  if (deltaCode == 0) {
834  uint8_t headLength = (slashPos - format);
835  if (headLength >= destSize) headLength = destSize - 1;
836  memcpy(dest, format, headLength);
837  dest[headLength] = '\0';
838  } else {
839  uint8_t tailLength = strlen(slashPos+1);
840  if (tailLength >= destSize) tailLength = destSize - 1;
841  memcpy(dest, slashPos+1, tailLength);
842  dest[tailLength] = '\0';
843  }
844  } else {
845  // Just copy the FORMAT disregarding the deltaCode and letter.
846  strncpy(dest, format, destSize);
847  dest[destSize - 1] = '\0';
848  }
849  }
850  }
851 
857  static void copyAndReplace(char* dst, uint8_t dstSize, const char* src,
858  char oldChar, char newChar) {
859  while (*src != '\0' && dstSize > 0) {
860  if (*src == oldChar) {
861  if (newChar == '-') {
862  src++;
863  } else {
864  *dst = newChar;
865  dst++;
866  src++;
867  dstSize--;
868  }
869  } else {
870  *dst++ = *src++;
871  dstSize--;
872  }
873  }
874 
875  if (dstSize == 0) {
876  --dst;
877  }
878  *dst = '\0';
879  }
880 
882  const basic::Transition* findMatch(acetime_t epochSeconds) const {
883  const basic::Transition* closestMatch = &mPrevTransition;
884  for (uint8_t i = 0; i < mNumTransitions; i++) {
885  const basic::Transition* m = &mTransitions[i];
886  if (m->startEpochSeconds <= epochSeconds) {
887  closestMatch = m;
888  }
889  }
890  return closestMatch;
891  }
892 
893  basic::ZoneInfoBroker mZoneInfo;
894 
895  mutable int16_t mYear = 0; // maybe create LocalDate::kInvalidYear?
896  mutable bool mIsFilled = false;
897  mutable uint8_t mNumTransitions = 0;
898  mutable basic::Transition mTransitions[kMaxCacheEntries];
899  mutable basic::Transition mPrevTransition; // previous year's transition
900 };
901 
902 }
903 
904 #endif
Base interface for ZoneProcessor classes.
Definition: ZoneProcessor.h:45
+
1 /*
2  * MIT License
3  * Copyright (c) 2019 Brian T. Park
4  */
5 
6 #ifndef ACE_TIME_BASIC_ZONE_PROCESSOR_H
7 #define ACE_TIME_BASIC_ZONE_PROCESSOR_H
8 
9 #include <string.h> // strchr()
10 #include <stdint.h>
11 #include "internal/ZonePolicy.h"
12 #include "internal/ZoneInfo.h"
13 #include "internal/Brokers.h"
14 #include "common/logging.h"
15 #include "TimeOffset.h"
16 #include "LocalDate.h"
17 #include "OffsetDateTime.h"
18 #include "ZoneProcessor.h"
19 
20 #define ACE_TIME_BASIC_ZONE_PROCESSOR_DEBUG 0
21 
22 class BasicZoneProcessorTest_init_primitives;
23 class BasicZoneProcessorTest_init;
24 class BasicZoneProcessorTest_setZoneInfo;
25 class BasicZoneProcessorTest_createAbbreviation;
26 class BasicZoneProcessorTest_calcStartDayOfMonth;
27 class BasicZoneProcessorTest_calcRuleOffsetCode;
28 
29 namespace ace_time {
30 
31 template<uint8_t SIZE, uint8_t TYPE, typename ZS, typename ZI, typename ZIB>
33 
34 namespace basic {
35 
51 struct Transition {
59  static const uint8_t kAbbrevSize = 6 + 1;
60 
67 
79 
81  acetime_t startEpochSeconds;
82 
84  int8_t yearTiny;
85 
91  int8_t offsetCode;
92 
94  int8_t deltaCode;
95 
104 
106  void log() const {
107  if (ACE_TIME_BASIC_ZONE_PROCESSOR_DEBUG) {
108  if (sizeof(acetime_t) == sizeof(int)) {
109  logging::printf("startEpochSeconds: %d\n", startEpochSeconds);
110  } else {
111  logging::printf("startEpochSeconds: %ld\n", startEpochSeconds);
112  }
113  logging::printf("offsetCode: %d\n", offsetCode);
114  logging::printf("abbrev: %s\n", abbrev);
115  if (rule.isNotNull()) {
116  logging::printf("Rule.fromYear: %d\n", rule.fromYearTiny());
117  logging::printf("Rule.toYear: %d\n", rule.toYearTiny());
118  logging::printf("Rule.inMonth: %d\n", rule.inMonth());
119  logging::printf("Rule.onDayOfMonth: %d\n", rule.onDayOfMonth());
120  }
121  }
122  }
123 };
124 
126 struct MonthDay {
127  uint8_t month;
128  uint8_t day;
129 };
130 
131 } // namespace basic
132 
185  public:
190  explicit BasicZoneProcessor(const basic::ZoneInfo* zoneInfo = nullptr):
191  ZoneProcessor(kTypeBasic),
192  mZoneInfo(zoneInfo) {}
193 
195  const void* getZoneInfo() const override {
196  return mZoneInfo.zoneInfo();
197  }
198 
199  uint32_t getZoneId() const override { return mZoneInfo.zoneId(); }
200 
201  TimeOffset getUtcOffset(acetime_t epochSeconds) const override {
202  const basic::Transition* transition = getTransition(epochSeconds);
203  int8_t code = (transition)
204  ? transition->offsetCode : TimeOffset::kErrorCode;
205  return TimeOffset::forOffsetCode(code);
206  }
207 
208  TimeOffset getDeltaOffset(acetime_t epochSeconds) const override {
209  const basic::Transition* transition = getTransition(epochSeconds);
210  int8_t code = (transition)
211  ? transition->deltaCode : TimeOffset::kErrorCode;
212  return TimeOffset::forOffsetCode(code);
213  }
214 
215  const char* getAbbrev(acetime_t epochSeconds) const override {
216  const basic::Transition* transition = getTransition(epochSeconds);
217  return (transition) ? transition->abbrev : "";
218  }
219 
249  OffsetDateTime getOffsetDateTime(const LocalDateTime& ldt) const override {
250  // Only a single local variable of OffsetDateTime used, to allow Return
251  // Value Optimization (and save 20 bytes of flash for WorldClock).
252  OffsetDateTime odt;
253  bool success = init(ldt.localDate());
254  if (success) {
255  // 0) Use the UTC epochSeconds to get intial guess of offset.
256  acetime_t epochSeconds0 = ldt.toEpochSeconds();
257  auto offset0 = getUtcOffset(epochSeconds0);
258 
259  // 1) Use offset0 to get the next epochSeconds and offset.
260  odt = OffsetDateTime::forLocalDateTimeAndOffset(ldt, offset0);
261  acetime_t epochSeconds1 = odt.toEpochSeconds();
262  auto offset1 = getUtcOffset(epochSeconds1);
263 
264  // 2) Use offset1 to get the next epochSeconds and offset.
265  odt = OffsetDateTime::forLocalDateTimeAndOffset(ldt, offset1);
266  acetime_t epochSeconds2 = odt.toEpochSeconds();
267  auto offset2 = getUtcOffset(epochSeconds2);
268 
269  // If offset1 and offset2 are equal, then we have an equilibrium
270  // and odt(1) must equal odt(2), so we can just return the last odt.
271  if (offset1.toOffsetCode() == offset2.toOffsetCode()) {
272  // pass
273  } else {
274  // Pick the later epochSeconds and offset
275  acetime_t epochSeconds;
276  TimeOffset offset;
277  if (epochSeconds1 > epochSeconds2) {
278  epochSeconds = epochSeconds1;
279  offset = offset1;
280  } else {
281  epochSeconds = epochSeconds2;
282  offset = offset2;
283  }
284  odt = OffsetDateTime::forEpochSeconds(epochSeconds, offset);
285  }
286  } else {
287  odt = OffsetDateTime::forError();
288  }
289 
290  return odt;
291  }
292 
293  void printTo(Print& printer) const override;
294 
295  void printShortTo(Print& printer) const override;
296 
298  void log() const {
299  if (ACE_TIME_BASIC_ZONE_PROCESSOR_DEBUG) {
300  if (!mIsFilled) {
301  logging::printf("*not initialized*\n");
302  return;
303  }
304  logging::printf("mYear: %d\n", mYear);
305  logging::printf("mNumTransitions: %d\n", mNumTransitions);
306  logging::printf("---- PrevTransition\n");
307  mPrevTransition.log();
308  for (int i = 0; i < mNumTransitions; i++) {
309  logging::printf("---- Transition: %d\n", i);
310  mTransitions[i].log();
311  }
312  }
313  }
314 
333  static basic::MonthDay calcStartDayOfMonth(int16_t year, uint8_t month,
334  uint8_t onDayOfWeek, int8_t onDayOfMonth) {
335  if (onDayOfWeek == 0) return {month, (uint8_t) onDayOfMonth};
336 
337  if (onDayOfMonth >= 0) {
338  // Convert "last{Xxx}" to "last{Xxx}>={daysInMonth-6}".
339  uint8_t daysInMonth = LocalDate::daysInMonth(year, month);
340  if (onDayOfMonth == 0) {
341  onDayOfMonth = daysInMonth - 6;
342  }
343 
344  auto limitDate = LocalDate::forComponents(year, month, onDayOfMonth);
345  uint8_t dayOfWeekShift = (onDayOfWeek - limitDate.dayOfWeek() + 7) % 7;
346  uint8_t day = (uint8_t) (onDayOfMonth + dayOfWeekShift);
347  if (day > daysInMonth) {
348  // TODO: Support shifting from Dec to Jan of following year.
349  day -= daysInMonth;
350  month++;
351  }
352  return {month, day};
353  } else {
354  onDayOfMonth = -onDayOfMonth;
355  auto limitDate = LocalDate::forComponents(year, month, onDayOfMonth);
356  int8_t dayOfWeekShift = (limitDate.dayOfWeek() - onDayOfWeek + 7) % 7;
357  int8_t day = onDayOfMonth - dayOfWeekShift;
358  if (day < 1) {
359  // TODO: Support shifting from Jan to Dec of the previous year.
360  month--;
361  uint8_t daysInPrevMonth = LocalDate::daysInMonth(year, month);
362  day += daysInPrevMonth;
363  }
364  return {month, (uint8_t) day};
365  }
366  }
367 
368  private:
369  friend class ::BasicZoneProcessorTest_init_primitives;
370  friend class ::BasicZoneProcessorTest_init;
371  friend class ::BasicZoneProcessorTest_setZoneInfo;
372  friend class ::BasicZoneProcessorTest_createAbbreviation;
373  friend class ::BasicZoneProcessorTest_calcStartDayOfMonth;
374  friend class ::BasicZoneProcessorTest_calcRuleOffsetCode;
375 
376  template<uint8_t SIZE, uint8_t TYPE, typename ZS, typename ZI, typename ZIB>
377  friend class ZoneProcessorCacheImpl; // setZoneInfo()
378 
380  static const uint8_t kMaxCacheEntries = 4;
381 
387  static const acetime_t kMinEpochSeconds = INT32_MIN + 1;
388 
389  // Disable copy constructor and assignment operator.
390  BasicZoneProcessor(const BasicZoneProcessor&) = delete;
391  BasicZoneProcessor& operator=(const BasicZoneProcessor&) = delete;
392 
393  bool equals(const ZoneProcessor& other) const override {
394  const auto& that = (const BasicZoneProcessor&) other;
395  return getZoneInfo() == that.getZoneInfo();
396  }
397 
399  void setZoneInfo(const void* zoneInfo) override {
400  if (mZoneInfo.zoneInfo() == zoneInfo) return;
401 
402  mZoneInfo = basic::ZoneInfoBroker((const basic::ZoneInfo*) zoneInfo);
403  mYear = 0;
404  mIsFilled = false;
405  mNumTransitions = 0;
406  }
407 
409  const basic::Transition* getTransition(acetime_t epochSeconds) const {
410  LocalDate ld = LocalDate::forEpochSeconds(epochSeconds);
411  bool success = init(ld);
412  return (success) ? findMatch(epochSeconds) : nullptr;
413  }
414 
443  bool init(const LocalDate& ld) const {
444  int16_t year = ld.year();
445  if (ld.month() == 1 && ld.day() == 1) {
446  year--;
447  }
448  if (isFilled(year)) return true;
449 
450  mYear = year;
451  mNumTransitions = 0; // clear cache
452 
453  if (year < mZoneInfo.startYear() - 1 || mZoneInfo.untilYear() < year) {
454  return false;
455  }
456 
457  addRulePriorToYear(year);
458  addRulesForYear(year);
459  calcTransitions();
460  calcAbbreviations();
461 
462  mIsFilled = true;
463  return true;
464  }
465 
467  bool isFilled(int16_t year) const {
468  return mIsFilled && (year == mYear);
469  }
470 
475  void addRulePriorToYear(int16_t year) const {
476  int8_t yearTiny = year - LocalDate::kEpochYear;
477  int8_t priorYearTiny = yearTiny - 1;
478 
479  // Find the prior Era.
480  const basic::ZoneEraBroker era = findZoneEraPriorTo(year);
481 
482  // If the prior ZoneEra is a simple Era (no zone policy), then create a
483  // Transition using a rule==nullptr. Otherwise, find the latest rule
484  // within the ZoneEra.
485  const basic::ZonePolicyBroker zonePolicy = era.zonePolicy();
486  basic::ZoneRuleBroker latest;
487  if (zonePolicy.isNotNull()) {
488  // Find the latest rule for the matching ZoneEra whose
489  // ZoneRule::toYearTiny < yearTiny. Assume that there are no more than
490  // 1 rule per month.
491  uint8_t numRules = zonePolicy.numRules();
492  for (uint8_t i = 0; i < numRules; i++) {
493  const basic::ZoneRuleBroker rule = zonePolicy.rule(i);
494  // Check if rule is effective prior to the given year
495  if (rule.fromYearTiny() < yearTiny) {
496  if ((latest.isNull()) || compareZoneRule(year, rule, latest) > 0) {
497  latest = rule;
498  }
499  }
500  }
501  }
502 
503  mPrevTransition = createTransition(era, latest, priorYearTiny);
504  }
505 
511  static basic::Transition createTransition(basic::ZoneEraBroker era,
513  int8_t offsetCode;
514  int8_t deltaCode;
515  char letter;
516  if (rule.isNull()) {
517  deltaCode = 0;
518  offsetCode = era.offsetCode();
519  letter = 0;
520  } else {
521  deltaCode = rule.deltaCode();
522  offsetCode = era.offsetCode() + deltaCode;
523  letter = rule.letter();
524  }
525 
526  return {
527  era,
528  rule,
529  0 /*epochSeconds*/,
530  yearTiny,
531  offsetCode,
532  deltaCode,
533  {letter} /*abbrev*/
534  };
535  }
536 
538  static int8_t compareZoneRule(int16_t year,
539  const basic::ZoneRuleBroker a, const basic::ZoneRuleBroker b) {
540  int16_t aYear = effectiveRuleYear(year, a);
541  int16_t bYear = effectiveRuleYear(year, b);
542  if (aYear < bYear) return -1;
543  if (aYear > bYear) return 1;
544  if (a.inMonth() < b.inMonth()) return -1;
545  if (a.inMonth() > b.inMonth()) return 1;
546  return 0;
547  }
548 
553  static int16_t effectiveRuleYear(int16_t year,
554  const basic::ZoneRuleBroker rule) {
555  int8_t yearTiny = year - LocalDate::kEpochYear;
556  if (rule.toYearTiny() < yearTiny) {
557  return rule.toYearTiny() + LocalDate::kEpochYear;
558  }
559  if (rule.fromYearTiny() < yearTiny) {
560  return year - 1;
561  }
562  return 0;
563  }
564 
566  void addRulesForYear(int16_t year) const {
567  const basic::ZoneEraBroker era = findZoneEra(year);
568 
569  // If the ZonePolicy has no rules, then add a Transition which takes
570  // effect at the start time of the current year.
571  const basic::ZonePolicyBroker zonePolicy = era.zonePolicy();
572  if (zonePolicy.isNull()) {
573  addRule(year, era, basic::ZoneRuleBroker());
574  return;
575  }
576 
577  // If the ZonePolicy has rules, find all matching transitions, and add
578  // them to mTransitions, in sorted order according to the
579  // ZoneRule::inMonth field.
580  int8_t yearTiny = year - LocalDate::kEpochYear;
581  uint8_t numRules = zonePolicy.numRules();
582  for (uint8_t i = 0; i < numRules; i++) {
583  const basic::ZoneRuleBroker rule = zonePolicy.rule(i);
584  if ((rule.fromYearTiny() <= yearTiny) &&
585  (yearTiny <= rule.toYearTiny())) {
586  addRule(year, era, rule);
587  }
588  }
589  }
590 
605  void addRule(int16_t year, basic::ZoneEraBroker era,
606  basic::ZoneRuleBroker rule) const {
607 
608  // If a zone needs more transitions than kMaxCacheEntries, the check below
609  // will cause the DST transition information to be inaccurate, and it is
610  // highly likely that this situation would be caught in the
611  // BasicValidationUsingPython or BasicValidationUsingJava unit tests.
612  // Since these unit tests pass, I feel confident that those zones which
613  // need more than kMaxCacheEntries are already filtered out by
614  // tzcompiler.py.
615  //
616  // Ideally, the tzcompiler.py script would explicitly remove those zones
617  // which need more than kMaxCacheEntries Transitions. But this would
618  // require a Python version of the BasicZoneProcessor, and unfortunately,
619  // zone_specifier.py implements only the ExtendedZoneProcessor algorithm
620  // An early version of zone_specifier.py may have implemented something
621  // close to BasicZoneProcessor, and it may be available in the git
622  // history. But it seems like too much work right now to try to dig that
623  // out, just to implement the explicit check for kMaxCacheEntries. It
624  // would mean maintaining another version of zone_specifier.py.
625  if (mNumTransitions >= kMaxCacheEntries) return;
626 
627  // insert new element at the end of the list
628  int8_t yearTiny = year - LocalDate::kEpochYear;
629  mTransitions[mNumTransitions] = createTransition(era, rule, yearTiny);
630  mNumTransitions++;
631 
632  // perform an insertion sort
633  for (uint8_t i = mNumTransitions - 1; i > 0; i--) {
634  basic::Transition& left = mTransitions[i - 1];
635  basic::Transition& right = mTransitions[i];
636  // assume only 1 rule per month
637  if ((left.rule.isNotNull() && right.rule.isNotNull() &&
638  left.rule.inMonth() > right.rule.inMonth())
639  || (left.rule.isNotNull() && right.rule.isNull())) {
640  basic::Transition tmp = left;
641  left = right;
642  right = tmp;
643  }
644  }
645  }
646 
652  const basic::ZoneEraBroker findZoneEra(int16_t year) const {
653  for (uint8_t i = 0; i < mZoneInfo.numEras(); i++) {
654  const basic::ZoneEraBroker era = mZoneInfo.era(i);
655  if (year < era.untilYearTiny() + LocalDate::kEpochYear) return era;
656  }
657  // Return the last ZoneEra if we run off the end.
658  return mZoneInfo.era(mZoneInfo.numEras() - 1);
659  }
660 
672  const basic::ZoneEraBroker findZoneEraPriorTo(int16_t year) const {
673  for (uint8_t i = 0; i < mZoneInfo.numEras(); i++) {
674  const basic::ZoneEraBroker era = mZoneInfo.era(i);
675  if (year <= era.untilYearTiny() + LocalDate::kEpochYear) return era;
676  }
677  // Return the last ZoneEra if we run off the end.
678  return mZoneInfo.era(mZoneInfo.numEras() - 1);
679  }
680 
688  void calcTransitions() const {
689  // Set the initial startEpochSeconds to be -Infinity
690  mPrevTransition.startEpochSeconds = kMinEpochSeconds;
691  const basic::Transition* prevTransition = &mPrevTransition;
692 
693  for (uint8_t i = 0; i < mNumTransitions; i++) {
694  basic::Transition& transition = mTransitions[i];
695  const int16_t year = transition.yearTiny + LocalDate::kEpochYear;
696 
697  if (transition.rule.isNull()) {
698  // If the transition is simple (has no named rule), then the
699  // ZoneEra applies for the entire year (since BasicZoneProcessor
700  // supports only whole year in the UNTIL field). The whole year UNTIL
701  // field has an implied 'w' modifier on 00:00, we don't need to call
702  // calcRuleOffsetCode() with a 'w', we can just use the previous
703  // transition's offset to calculate the startDateTime of this
704  // transition.
705  //
706  // Also, when transition.rule == nullptr, the mNumTransitions should
707  // be 1, since only a single transition is added by
708  // addRulesForYear().
709  const int8_t prevOffsetCode = prevTransition->offsetCode;
711  year, 1, 1, 0, 0, 0,
712  TimeOffset::forOffsetCode(prevOffsetCode));
713  transition.startEpochSeconds = startDateTime.toEpochSeconds();
714  } else {
715  // In this case, the transition points to a named ZonePolicy, which
716  // means that there could be multiple ZoneRules associated with the
717  // given year. For each transition, determine the startEpochSeconds,
718  // and the effective offset code.
719 
720  // Determine the start date of the rule.
721  const basic::MonthDay monthDay = calcStartDayOfMonth(
722  year, transition.rule.inMonth(), transition.rule.onDayOfWeek(),
723  transition.rule.onDayOfMonth());
724 
725  // Determine the offset of the 'atTimeModifier'. The 'w' modifier
726  // requires the offset of the previous transition.
727  const int8_t prevOffsetCode = calcRuleOffsetCode(
728  prevTransition->offsetCode,
729  transition.era.offsetCode(),
730  transition.rule.atTimeModifier());
731 
732  // startDateTime
733  const uint16_t minutes = transition.rule.atTimeMinutes();
734  const uint8_t atHour = minutes / 60;
735  const uint8_t atMinute = minutes % 60;
737  year, monthDay.month, monthDay.day,
738  atHour, atMinute, 0 /*second*/,
739  TimeOffset::forOffsetCode(prevOffsetCode));
740  transition.startEpochSeconds = startDateTime.toEpochSeconds();
741  }
742 
743  prevTransition = &transition;
744  }
745  }
746 
753  static int8_t calcRuleOffsetCode(int8_t prevEffectiveOffsetCode,
754  int8_t currentBaseOffsetCode, uint8_t atModifier) {
755  if (atModifier == basic::ZoneContext::TIME_MODIFIER_W) {
756  return prevEffectiveOffsetCode;
757  } else if (atModifier == basic::ZoneContext::TIME_MODIFIER_S) {
758  return currentBaseOffsetCode;
759  } else { // 'u', 'g' or 'z'
760  return 0;
761  }
762  }
763 
765  void calcAbbreviations() const {
766  calcAbbreviation(&mPrevTransition);
767  for (uint8_t i = 0; i < mNumTransitions; i++) {
768  calcAbbreviation(&mTransitions[i]);
769  }
770  }
771 
773  static void calcAbbreviation(basic::Transition* transition) {
774  createAbbreviation(
775  transition->abbrev,
777  transition->era.format(),
778  transition->deltaCode,
779  transition->abbrev[0]);
780  }
781 
817  static void createAbbreviation(char* dest, uint8_t destSize,
818  const char* format, uint8_t deltaCode, char letter) {
819  // Check if RULES column empty.
820  if (deltaCode == 0 && letter == '\0') {
821  strncpy(dest, format, destSize);
822  dest[destSize - 1] = '\0';
823  return;
824  }
825 
826  // Check if FORMAT contains a '%'.
827  if (strchr(format, '%') != nullptr) {
828  copyAndReplace(dest, destSize, format, '%', letter);
829  } else {
830  // Check if FORMAT contains a '/'.
831  const char* slashPos = strchr(format, '/');
832  if (slashPos != nullptr) {
833  if (deltaCode == 0) {
834  uint8_t headLength = (slashPos - format);
835  if (headLength >= destSize) headLength = destSize - 1;
836  memcpy(dest, format, headLength);
837  dest[headLength] = '\0';
838  } else {
839  uint8_t tailLength = strlen(slashPos+1);
840  if (tailLength >= destSize) tailLength = destSize - 1;
841  memcpy(dest, slashPos+1, tailLength);
842  dest[tailLength] = '\0';
843  }
844  } else {
845  // Just copy the FORMAT disregarding the deltaCode and letter.
846  strncpy(dest, format, destSize);
847  dest[destSize - 1] = '\0';
848  }
849  }
850  }
851 
857  static void copyAndReplace(char* dst, uint8_t dstSize, const char* src,
858  char oldChar, char newChar) {
859  while (*src != '\0' && dstSize > 0) {
860  if (*src == oldChar) {
861  if (newChar == '-') {
862  src++;
863  } else {
864  *dst = newChar;
865  dst++;
866  src++;
867  dstSize--;
868  }
869  } else {
870  *dst++ = *src++;
871  dstSize--;
872  }
873  }
874 
875  if (dstSize == 0) {
876  --dst;
877  }
878  *dst = '\0';
879  }
880 
882  const basic::Transition* findMatch(acetime_t epochSeconds) const {
883  const basic::Transition* closestMatch = &mPrevTransition;
884  for (uint8_t i = 0; i < mNumTransitions; i++) {
885  const basic::Transition* m = &mTransitions[i];
886  if (m->startEpochSeconds <= epochSeconds) {
887  closestMatch = m;
888  }
889  }
890  return closestMatch;
891  }
892 
893  basic::ZoneInfoBroker mZoneInfo;
894 
895  mutable int16_t mYear = 0; // maybe create LocalDate::kInvalidYear?
896  mutable bool mIsFilled = false;
897  mutable uint8_t mNumTransitions = 0;
898  mutable basic::Transition mTransitions[kMaxCacheEntries];
899  mutable basic::Transition mPrevTransition; // previous year's transition
900 };
901 
902 }
903 
904 #endif
Base interface for ZoneProcessor classes.
Definition: ZoneProcessor.h:45
ZoneEraBroker era
The ZoneEra that matched the given year.
const char * getAbbrev(acetime_t epochSeconds) const override
Return the time zone abbreviation at epochSeconds.
void log() const
Used only for debugging.
A cache of ZoneProcessors that provides a ZoneProcessor to the TimeZone upon request.
static const uint8_t kAbbrevSize
Longest abbreviation currently seems to be 5 characters (https://www.timeanddate.com/time/zones/) but...
-
Data broker for accessing ZonePolicy in PROGMEM.
Definition: Brokers.h:297
+
Data broker for accessing ZonePolicy in PROGMEM.
Definition: Brokers.h:322
char abbrev[kAbbrevSize]
The calculated effective time zone abbreviation, e.g.
static OffsetDateTime forLocalDateTimeAndOffset(const LocalDateTime &localDateTime, TimeOffset timeOffset)
Factory method from LocalDateTime and TimeOffset.
BasicZoneProcessor(const basic::ZoneInfo *zoneInfo=nullptr)
Constructor.
-
Representation of a given time zone, implemented as an array of ZoneEra records.
Definition: ZoneInfo.h:77
+
Representation of a given time zone, implemented as an array of ZoneEra records.
Definition: ZoneInfo.h:86
The result of calcStartDayOfMonth().
virtual const void * getZoneInfo() const =0
Return the opaque zoneInfo.
uint32_t getZoneId() const override
Return the unique stable zoneId.
static OffsetDateTime forComponents(int16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second, TimeOffset timeOffset)
Factory method using separated date, time, and UTC offset fields.
acetime_t startEpochSeconds
The calculated transition time of the given rule.
-
uint8_t day() const
Return the day of the month.
Definition: LocalDate.h:237
+
uint8_t day() const
Return the day of the month.
Definition: LocalDate.h:245
int8_t yearTiny
Year which applies to the ZoneEra or ZoneRule.
static OffsetDateTime forEpochSeconds(acetime_t epochSeconds, TimeOffset timeOffset)
Factory method.
ZoneRuleBroker rule
The Zone transition rule that matched for the the given year.
-
acetime_t toEpochSeconds() const
Return seconds since AceTime epoch 2000-01-01 00:00:00Z, after assuming that the date and time compon...
-
const LocalDate & localDate() const
Return the LocalDate.
+
acetime_t toEpochSeconds() const
Return seconds since AceTime epoch 2000-01-01 00:00:00Z, after assuming that the date and time compon...
+
const LocalDate & localDate() const
Return the LocalDate.
TimeOffset getDeltaOffset(acetime_t epochSeconds) const override
Return the DST delta offset at epochSeconds.
const void * getZoneInfo() const override
Return the underlying ZoneInfo.
void log() const
Used only for debugging.
-
static const int8_t kErrorCode
Sentinel value that represents an error.
Definition: TimeOffset.h:61
+
static const int8_t kErrorCode
Sentinel value that represents an error.
Definition: TimeOffset.h:64
An implementation of ZoneProcessor that supports a subset of the zones containing in the TZ Database...
static LocalDate forEpochSeconds(acetime_t epochSeconds)
Factory method using the number of seconds since AceTime epoch of 2000-01-01.
Definition: LocalDate.h:145
-
static TimeOffset forOffsetCode(int8_t offsetCode)
Create TimeOffset from the offset code.
Definition: TimeOffset.h:117
+
static TimeOffset forOffsetCode(int8_t offsetCode)
Create TimeOffset from the offset code.
Definition: TimeOffset.h:120
The classes provide a thin layer of indirection for accessing the zoneinfo files stored in the zonedb...
The date (year, month, day), time (hour, minute, second) and offset from UTC (timeOffset).
Data structure that defines the start of a specific UTC offset as described by the matching ZoneEra a...
OffsetDateTime getOffsetDateTime(const LocalDateTime &ldt) const override
-
acetime_t toEpochSeconds() const
Return seconds since AceTime epoch (2000-01-01 00:00:00Z), taking into account the offset zone...
-
A thin wrapper that represents a time offset from a reference point, usually 00:00 at UTC...
Definition: TimeOffset.h:58
+
acetime_t toEpochSeconds() const
Return seconds since AceTime epoch (2000-01-01 00:00:00Z), taking into account the offset zone...
+
A thin wrapper that represents a time offset from a reference point, usually 00:00 at UTC...
Definition: TimeOffset.h:61
static LocalDate forComponents(int16_t year, uint8_t month, uint8_t day)
Factory method using separated year, month and day fields.
Definition: LocalDate.h:94
The date (year, month, day) representing the date without regards to time zone.
Definition: LocalDate.h:36
+
static const uint8_t TIME_MODIFIER_S
Represents &#39;s&#39; or standard time.
Definition: ZoneContext.h:16
static const int16_t kEpochYear
Base year of epoch.
Definition: LocalDate.h:39
int8_t offsetCode
The total effective UTC offsetCode at the start of transition, including DST offset.
static uint8_t daysInMonth(int16_t year, uint8_t month)
Return the number of days in the current month.
Definition: LocalDate.h:210
int8_t deltaCode
The delta offsetCode from "standard time" at the start of transition.
-
uint8_t month() const
Return the month with January=1, December=12.
Definition: LocalDate.h:231
+
uint8_t month() const
Return the month with January=1, December=12.
Definition: LocalDate.h:239
int16_t year() const
Return the full year instead of just the last 2 digits.
Definition: LocalDate.h:219
static basic::MonthDay calcStartDayOfMonth(int16_t year, uint8_t month, uint8_t onDayOfWeek, int8_t onDayOfMonth)
Calculate the actual (month, day) of the expresssion (onDayOfWeek >= onDayOfMonth) or (onDayOfWeek <=...
+
static const uint8_t TIME_MODIFIER_W
Represents &#39;w&#39; or wall time.
Definition: ZoneContext.h:13
static OffsetDateTime forError()
Factory method that returns an instance whose isError() is true.
Class that holds the date-time as the components (year, month, day, hour, minute, second) without reg...
Definition: LocalDateTime.h:27
diff --git a/docs/html/BasicZone_8h_source.html b/docs/html/BasicZone_8h_source.html index cc8f0664f..f94afa45a 100644 --- a/docs/html/BasicZone_8h_source.html +++ b/docs/html/BasicZone_8h_source.html @@ -22,7 +22,7 @@
AceTime -  0.6.1 +  0.7
Date and time classes for Arduino that support timezones from the TZ Database, and a system clock that can synchronize from an NTP server or an RTC chip.
@@ -69,7 +69,7 @@
1 /*
2  * MIT License
3  * Copyright (c) 2019 Brian T. Park
4  */
5 
6 #ifndef ACE_TIME_BASIC_ZONE_H
7 #define ACE_TIME_BASIC_ZONE_H
8 
9 #include "internal/ZoneInfo.h"
10 #include "internal/Brokers.h"
11 #include "common/compat.h"
12 
13 class __FlashStringHelper;
14 
15 namespace ace_time {
16 
22 class BasicZone {
23  public:
24  BasicZone(const basic::ZoneInfo* zoneInfo):
25  mZoneInfoBroker(zoneInfo) {}
26 
27  // use default copy constructor and assignment operator
28  BasicZone(const BasicZone&) = default;
29  BasicZone& operator=(const BasicZone&) = default;
30 
31 // TODO: Merge this with ExtendedZone.h now that they both use the same
32 // ACE_TIME_USE_PROGMEM macro.
33 #if ACE_TIME_USE_PROGMEM
34  const __FlashStringHelper* name() const {
35  return (const __FlashStringHelper*) mZoneInfoBroker.name();
36  }
37 
38  const __FlashStringHelper* shortName() const {
39  const char* name = mZoneInfoBroker.name();
40  const char* slash = strrchr_P(name, '/');
41  return (slash) ? (const __FlashStringHelper*) (slash + 1)
42  : (const __FlashStringHelper*) name;
43  }
44 #else
45  const char* name() const {
46  return (const char*) mZoneInfoBroker.name();
47  }
48 
49  const char* shortName() const {
50  const char* name = mZoneInfoBroker.name();
51  const char* slash = strrchr(name, '/');
52  return (slash) ? (slash + 1) : name;
53  }
54 #endif
55 
56  uint32_t zoneId() const {
57  return mZoneInfoBroker.zoneId();
58  }
59 
60  private:
61  const basic::ZoneInfoBroker mZoneInfoBroker;
62 };
63 
64 }
65 
66 #endif
-
Representation of a given time zone, implemented as an array of ZoneEra records.
Definition: ZoneInfo.h:77
+
Representation of a given time zone, implemented as an array of ZoneEra records.
Definition: ZoneInfo.h:86
A thin wrapper around a basic::ZoneInfo data structure to provide a stable API access to some useful ...
Definition: BasicZone.h:22
The classes provide a thin layer of indirection for accessing the zoneinfo files stored in the zonedb...
diff --git a/docs/html/Brokers_8h.html b/docs/html/Brokers_8h.html index 0236ec488..ccf979bee 100644 --- a/docs/html/Brokers_8h.html +++ b/docs/html/Brokers_8h.html @@ -22,7 +22,7 @@
AceTime -  0.6.1 +  0.7
Date and time classes for Arduino that support timezones from the TZ Database, and a system clock that can synchronize from an NTP server or an RTC chip.
@@ -66,7 +66,8 @@
Brokers.h File Reference
@@ -83,11 +84,11 @@ - + - - + +
@@ -180,6 +181,16 @@ typedef internal::FlashZoneRegistryBroker< ZoneInfo > ace_time::extended::ZoneRegistryBroker   + + + + + + + +

+Functions

uint16_t ace_time::internal::timeCodeToMinutes (uint8_t rawCode, uint8_t rawModifier)
 Convert (timeCode, timeModifier) fields in zoneinfo to minutes. More...
 
+uint8_t ace_time::internal::toModifier (uint8_t rawModifier)
 Extract the 'w', 's' 'u' suffix from the 'modifier' field, so that they can be compared against TIME_MODIFIER_W, TIME_MODIFIER_S and TIME_MODIFIER_U.
 

Detailed Description

The classes provide a thin layer of indirection for accessing the zoneinfo files stored in the zonedb/ and zonedbx/ directories.

@@ -189,7 +200,48 @@

The core broker classes live in the internal:: namespace and are templatized so that they can be used for both basic::Zone* classes and the extended::Zone* classes. Specific template instantiations are created in the basic:: and extended:: namespaces so that they can be used by the BasicZoneProcessor and ExtendedZoneProcessor respectively.

Definition in file Brokers.h.

-
+

Function Documentation

+ +

◆ timeCodeToMinutes()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
uint16_t ace_time::internal::timeCodeToMinutes (uint8_t rawCode,
uint8_t rawModifier 
)
+
+inline
+
+ +

Convert (timeCode, timeModifier) fields in zoneinfo to minutes.

+ +

Definition at line 48 of file Brokers.h.

+ +
+
+