AceTime  3.0.0
Date and time classes for Arduino that support timezones from the TZ Database.
zone_infos.cpp
1 // This file was generated by the following script:
2 //
3 // $ /home/brian/src/AceTimeSuite/compiler/src/acetimecompiler/tzcompiler.py
4 // --input_dir /home/brian/src/AceTimeSuite/libraries/AceTimeLib/src/testingzonedbc/tzfiles
5 // --output_dir /home/brian/src/AceTimeSuite/libraries/AceTimeLib/src/testingzonedbc
6 // --tz_version 2025b
7 // --action zonedb
8 // --language arduino
9 // --scope complete
10 // --db_namespace testingzonedbc
11 // --zi_namespace complete::Info
12 // --include_list include_list.txt
13 // --nocompress
14 // --start_year 1980
15 // --until_year 2200
16 //
17 // using the TZ Database files
18 //
19 // africa
20 // antarctica
21 // asia
22 // australasia
23 // backward
24 // etcetera
25 // europe
26 // northamerica
27 // southamerica
28 //
29 // from https://github.com/eggert/tz/releases/tag/2025b
30 //
31 // Supported Zones: 16 (15 zones, 1 links)
32 // Unsupported Zones: 581 (325 zones, 256 links)
33 //
34 // Requested Years: [1980,2200]
35 // Accurate Years: [1980,32767]
36 //
37 // Original Years: [1844,2087]
38 // Generated Years: [1945,2087]
39 // Lower/Upper Truncated: [True,False]
40 //
41 // Estimator Years: [1945,2090]
42 // Max Buffer Size: 7
43 //
44 // Records:
45 // Infos: 16
46 // Eras: 30
47 // Policies: 11
48 // Rules: 220
49 //
50 // Memory (8-bits):
51 // Context: 16
52 // Rules: 2640
53 // Policies: 33
54 // Eras: 450
55 // Zones: 195
56 // Links: 13
57 // Registry: 32
58 // Formats: 47
59 // Letters: 23
60 // Fragments: 0
61 // Names: 260 (original: 260)
62 // TOTAL: 3709
63 //
64 // Memory (32-bits):
65 // Context: 24
66 // Rules: 2640
67 // Policies: 88
68 // Eras: 600
69 // Zones: 360
70 // Links: 24
71 // Registry: 64
72 // Formats: 47
73 // Letters: 33
74 // Fragments: 0
75 // Names: 260 (original: 260)
76 // TOTAL: 4140
77 //
78 // DO NOT EDIT
79 
80 #include <zoneinfo/compat.h>
81 #include "zone_policies.h"
82 #include "zone_infos.h"
83 
84 namespace ace_time {
85 namespace testingzonedbc {
86 
87 //---------------------------------------------------------------------------
88 // ZoneContext
89 //---------------------------------------------------------------------------
90 
91 static const char kVersionString[] ACE_TIME_PROGMEM = "2025b";
92 const __FlashStringHelper* const kTzDatabaseVersion =
93  (const __FlashStringHelper*) kVersionString;
94 
95 
96 const char* const kFragments[] ACE_TIME_PROGMEM = {
97  nullptr, // '\x00' cannot exist
98 
99 };
100 
101 static const char kLetter0[] ACE_TIME_PROGMEM = "";
102 static const char kLetter1[] ACE_TIME_PROGMEM = "CAT";
103 static const char kLetter2[] ACE_TIME_PROGMEM = "D";
104 static const char kLetter3[] ACE_TIME_PROGMEM = "S";
105 static const char kLetter4[] ACE_TIME_PROGMEM = "WAT";
106 
107 const char* const kLetters[] ACE_TIME_PROGMEM = {
108  kLetter0, // ""
109  kLetter1, // "CAT"
110  kLetter2, // "D"
111  kLetter3, // "S"
112  kLetter4, // "WAT"
113 
114 };
115 
116 const complete::Info::ZoneContext kZoneContext ACE_TIME_PROGMEM = {
117  1980 /*startYear*/,
118  2200 /*untilYear*/,
119  1980 /*startYearAccurate*/,
120  32767 /*untilYearAccurate*/,
121  2100 /*baseYear*/,
122  7 /*maxTransitions*/,
123  kVersionString /*tzVersion*/,
124  1 /*numFragments*/,
125  5 /*numLetters*/,
126  kFragments /*fragments*/,
127  kLetters /*letters*/,
128 };
129 
130 //---------------------------------------------------------------------------
131 // Zones: 15
132 // Eras: 30
133 //---------------------------------------------------------------------------
134 
135 //---------------------------------------------------------------------------
136 // Zone name: Africa/Casablanca
137 // Eras: 4
138 //---------------------------------------------------------------------------
139 
140 static const complete::Info::ZoneEra kZoneEraAfrica_Casablanca[] ACE_TIME_PROGMEM = {
141  // 0:00 Morocco %z 1984 Mar 16
142  {
143  &kZonePolicyMorocco /*zonePolicy*/,
144  "" /*format*/,
145  0 /*offsetCode (0/15)*/,
146  0 /*offsetRemainder (0%15)*/,
147  0 /*deltaMinutes*/,
148  1984 /*untilYear*/,
149  3 /*untilMonth*/,
150  16 /*untilDay*/,
151  0 /*untilTimeCode (0/15)*/,
152  0 /*untilTimeModifier (kAtcSuffixW + seconds=0)*/,
153  },
154  // 1:00 - %z 1986
155  {
156  nullptr /*zonePolicy*/,
157  "" /*format*/,
158  240 /*offsetCode (3600/15)*/,
159  0 /*offsetRemainder (3600%15)*/,
160  0 /*deltaMinutes*/,
161  1986 /*untilYear*/,
162  1 /*untilMonth*/,
163  1 /*untilDay*/,
164  0 /*untilTimeCode (0/15)*/,
165  0 /*untilTimeModifier (kAtcSuffixW + seconds=0)*/,
166  },
167  // 0:00 Morocco %z 2018 Oct 28 3:00
168  {
169  &kZonePolicyMorocco /*zonePolicy*/,
170  "" /*format*/,
171  0 /*offsetCode (0/15)*/,
172  0 /*offsetRemainder (0%15)*/,
173  0 /*deltaMinutes*/,
174  2018 /*untilYear*/,
175  10 /*untilMonth*/,
176  28 /*untilDay*/,
177  720 /*untilTimeCode (10800/15)*/,
178  0 /*untilTimeModifier (kAtcSuffixW + seconds=0)*/,
179  },
180  // 1:00 Morocco %z
181  {
182  &kZonePolicyMorocco /*zonePolicy*/,
183  "" /*format*/,
184  240 /*offsetCode (3600/15)*/,
185  0 /*offsetRemainder (3600%15)*/,
186  0 /*deltaMinutes*/,
187  32767 /*untilYear*/,
188  1 /*untilMonth*/,
189  1 /*untilDay*/,
190  0 /*untilTimeCode (0/15)*/,
191  0 /*untilTimeModifier (kAtcSuffixW + seconds=0)*/,
192  },
193 
194 };
195 
196 static const char kZoneNameAfrica_Casablanca[] ACE_TIME_PROGMEM = "Africa/Casablanca";
197 
198 const complete::Info::ZoneInfo kZoneAfrica_Casablanca ACE_TIME_PROGMEM = {
199  kZoneNameAfrica_Casablanca /*name*/,
200  0xc59f1b33 /*zoneId*/,
201  &kZoneContext /*zoneContext*/,
202  4 /*numEras*/,
203  kZoneEraAfrica_Casablanca /*eras*/,
204  nullptr /*targetInfo*/,
205 };
206 
207 //---------------------------------------------------------------------------
208 // Zone name: Africa/Windhoek
209 // Eras: 2
210 //---------------------------------------------------------------------------
211 
212 static const complete::Info::ZoneEra kZoneEraAfrica_Windhoek[] ACE_TIME_PROGMEM = {
213  // 2:00 - SAST 1990 Mar 21
214  {
215  nullptr /*zonePolicy*/,
216  "SAST" /*format*/,
217  480 /*offsetCode (7200/15)*/,
218  0 /*offsetRemainder (7200%15)*/,
219  0 /*deltaMinutes*/,
220  1990 /*untilYear*/,
221  3 /*untilMonth*/,
222  21 /*untilDay*/,
223  0 /*untilTimeCode (0/15)*/,
224  0 /*untilTimeModifier (kAtcSuffixW + seconds=0)*/,
225  },
226  // 2:00 Namibia %s
227  {
228  &kZonePolicyNamibia /*zonePolicy*/,
229  "%" /*format*/,
230  480 /*offsetCode (7200/15)*/,
231  0 /*offsetRemainder (7200%15)*/,
232  0 /*deltaMinutes*/,
233  32767 /*untilYear*/,
234  1 /*untilMonth*/,
235  1 /*untilDay*/,
236  0 /*untilTimeCode (0/15)*/,
237  0 /*untilTimeModifier (kAtcSuffixW + seconds=0)*/,
238  },
239 
240 };
241 
242 static const char kZoneNameAfrica_Windhoek[] ACE_TIME_PROGMEM = "Africa/Windhoek";
243 
244 const complete::Info::ZoneInfo kZoneAfrica_Windhoek ACE_TIME_PROGMEM = {
245  kZoneNameAfrica_Windhoek /*name*/,
246  0x789c9bd3 /*zoneId*/,
247  &kZoneContext /*zoneContext*/,
248  2 /*numEras*/,
249  kZoneEraAfrica_Windhoek /*eras*/,
250  nullptr /*targetInfo*/,
251 };
252 
253 //---------------------------------------------------------------------------
254 // Zone name: America/Caracas
255 // Eras: 3
256 //---------------------------------------------------------------------------
257 
258 static const complete::Info::ZoneEra kZoneEraAmerica_Caracas[] ACE_TIME_PROGMEM = {
259  // -4:00 - %z 2007 Dec 9 3:00
260  {
261  nullptr /*zonePolicy*/,
262  "" /*format*/,
263  -960 /*offsetCode (-14400/15)*/,
264  0 /*offsetRemainder (-14400%15)*/,
265  0 /*deltaMinutes*/,
266  2007 /*untilYear*/,
267  12 /*untilMonth*/,
268  9 /*untilDay*/,
269  720 /*untilTimeCode (10800/15)*/,
270  0 /*untilTimeModifier (kAtcSuffixW + seconds=0)*/,
271  },
272  // -4:30 - %z 2016 May 1 2:30
273  {
274  nullptr /*zonePolicy*/,
275  "" /*format*/,
276  -1080 /*offsetCode (-16200/15)*/,
277  0 /*offsetRemainder (-16200%15)*/,
278  0 /*deltaMinutes*/,
279  2016 /*untilYear*/,
280  5 /*untilMonth*/,
281  1 /*untilDay*/,
282  600 /*untilTimeCode (9000/15)*/,
283  0 /*untilTimeModifier (kAtcSuffixW + seconds=0)*/,
284  },
285  // -4:00 - %z
286  {
287  nullptr /*zonePolicy*/,
288  "" /*format*/,
289  -960 /*offsetCode (-14400/15)*/,
290  0 /*offsetRemainder (-14400%15)*/,
291  0 /*deltaMinutes*/,
292  32767 /*untilYear*/,
293  1 /*untilMonth*/,
294  1 /*untilDay*/,
295  0 /*untilTimeCode (0/15)*/,
296  0 /*untilTimeModifier (kAtcSuffixW + seconds=0)*/,
297  },
298 
299 };
300 
301 static const char kZoneNameAmerica_Caracas[] ACE_TIME_PROGMEM = "America/Caracas";
302 
303 const complete::Info::ZoneInfo kZoneAmerica_Caracas ACE_TIME_PROGMEM = {
304  kZoneNameAmerica_Caracas /*name*/,
305  0x3be064f4 /*zoneId*/,
306  &kZoneContext /*zoneContext*/,
307  3 /*numEras*/,
308  kZoneEraAmerica_Caracas /*eras*/,
309  nullptr /*targetInfo*/,
310 };
311 
312 //---------------------------------------------------------------------------
313 // Zone name: America/Chicago
314 // Eras: 1
315 //---------------------------------------------------------------------------
316 
317 static const complete::Info::ZoneEra kZoneEraAmerica_Chicago[] ACE_TIME_PROGMEM = {
318  // -6:00 US C%sT
319  {
320  &kZonePolicyUS /*zonePolicy*/,
321  "C%T" /*format*/,
322  -1440 /*offsetCode (-21600/15)*/,
323  0 /*offsetRemainder (-21600%15)*/,
324  0 /*deltaMinutes*/,
325  32767 /*untilYear*/,
326  1 /*untilMonth*/,
327  1 /*untilDay*/,
328  0 /*untilTimeCode (0/15)*/,
329  0 /*untilTimeModifier (kAtcSuffixW + seconds=0)*/,
330  },
331 
332 };
333 
334 static const char kZoneNameAmerica_Chicago[] ACE_TIME_PROGMEM = "America/Chicago";
335 
336 const complete::Info::ZoneInfo kZoneAmerica_Chicago ACE_TIME_PROGMEM = {
337  kZoneNameAmerica_Chicago /*name*/,
338  0x4b92b5d4 /*zoneId*/,
339  &kZoneContext /*zoneContext*/,
340  1 /*numEras*/,
341  kZoneEraAmerica_Chicago /*eras*/,
342  nullptr /*targetInfo*/,
343 };
344 
345 //---------------------------------------------------------------------------
346 // Zone name: America/Denver
347 // Eras: 1
348 //---------------------------------------------------------------------------
349 
350 static const complete::Info::ZoneEra kZoneEraAmerica_Denver[] ACE_TIME_PROGMEM = {
351  // -7:00 US M%sT
352  {
353  &kZonePolicyUS /*zonePolicy*/,
354  "M%T" /*format*/,
355  -1680 /*offsetCode (-25200/15)*/,
356  0 /*offsetRemainder (-25200%15)*/,
357  0 /*deltaMinutes*/,
358  32767 /*untilYear*/,
359  1 /*untilMonth*/,
360  1 /*untilDay*/,
361  0 /*untilTimeCode (0/15)*/,
362  0 /*untilTimeModifier (kAtcSuffixW + seconds=0)*/,
363  },
364 
365 };
366 
367 static const char kZoneNameAmerica_Denver[] ACE_TIME_PROGMEM = "America/Denver";
368 
369 const complete::Info::ZoneInfo kZoneAmerica_Denver ACE_TIME_PROGMEM = {
370  kZoneNameAmerica_Denver /*name*/,
371  0x97d10b2a /*zoneId*/,
372  &kZoneContext /*zoneContext*/,
373  1 /*numEras*/,
374  kZoneEraAmerica_Denver /*eras*/,
375  nullptr /*targetInfo*/,
376 };
377 
378 //---------------------------------------------------------------------------
379 // Zone name: America/Edmonton
380 // Eras: 2
381 //---------------------------------------------------------------------------
382 
383 static const complete::Info::ZoneEra kZoneEraAmerica_Edmonton[] ACE_TIME_PROGMEM = {
384  // -7:00 Edm M%sT 1987
385  {
386  &kZonePolicyEdm /*zonePolicy*/,
387  "M%T" /*format*/,
388  -1680 /*offsetCode (-25200/15)*/,
389  0 /*offsetRemainder (-25200%15)*/,
390  0 /*deltaMinutes*/,
391  1987 /*untilYear*/,
392  1 /*untilMonth*/,
393  1 /*untilDay*/,
394  0 /*untilTimeCode (0/15)*/,
395  0 /*untilTimeModifier (kAtcSuffixW + seconds=0)*/,
396  },
397  // -7:00 Canada M%sT
398  {
399  &kZonePolicyCanada /*zonePolicy*/,
400  "M%T" /*format*/,
401  -1680 /*offsetCode (-25200/15)*/,
402  0 /*offsetRemainder (-25200%15)*/,
403  0 /*deltaMinutes*/,
404  32767 /*untilYear*/,
405  1 /*untilMonth*/,
406  1 /*untilDay*/,
407  0 /*untilTimeCode (0/15)*/,
408  0 /*untilTimeModifier (kAtcSuffixW + seconds=0)*/,
409  },
410 
411 };
412 
413 static const char kZoneNameAmerica_Edmonton[] ACE_TIME_PROGMEM = "America/Edmonton";
414 
415 const complete::Info::ZoneInfo kZoneAmerica_Edmonton ACE_TIME_PROGMEM = {
416  kZoneNameAmerica_Edmonton /*name*/,
417  0x6cb9484a /*zoneId*/,
418  &kZoneContext /*zoneContext*/,
419  2 /*numEras*/,
420  kZoneEraAmerica_Edmonton /*eras*/,
421  nullptr /*targetInfo*/,
422 };
423 
424 //---------------------------------------------------------------------------
425 // Zone name: America/Los_Angeles
426 // Eras: 1
427 //---------------------------------------------------------------------------
428 
429 static const complete::Info::ZoneEra kZoneEraAmerica_Los_Angeles[] ACE_TIME_PROGMEM = {
430  // -8:00 US P%sT
431  {
432  &kZonePolicyUS /*zonePolicy*/,
433  "P%T" /*format*/,
434  -1920 /*offsetCode (-28800/15)*/,
435  0 /*offsetRemainder (-28800%15)*/,
436  0 /*deltaMinutes*/,
437  32767 /*untilYear*/,
438  1 /*untilMonth*/,
439  1 /*untilDay*/,
440  0 /*untilTimeCode (0/15)*/,
441  0 /*untilTimeModifier (kAtcSuffixW + seconds=0)*/,
442  },
443 
444 };
445 
446 static const char kZoneNameAmerica_Los_Angeles[] ACE_TIME_PROGMEM = "America/Los_Angeles";
447 
448 const complete::Info::ZoneInfo kZoneAmerica_Los_Angeles ACE_TIME_PROGMEM = {
449  kZoneNameAmerica_Los_Angeles /*name*/,
450  0xb7f7e8f2 /*zoneId*/,
451  &kZoneContext /*zoneContext*/,
452  1 /*numEras*/,
453  kZoneEraAmerica_Los_Angeles /*eras*/,
454  nullptr /*targetInfo*/,
455 };
456 
457 //---------------------------------------------------------------------------
458 // Zone name: America/New_York
459 // Eras: 1
460 //---------------------------------------------------------------------------
461 
462 static const complete::Info::ZoneEra kZoneEraAmerica_New_York[] ACE_TIME_PROGMEM = {
463  // -5:00 US E%sT
464  {
465  &kZonePolicyUS /*zonePolicy*/,
466  "E%T" /*format*/,
467  -1200 /*offsetCode (-18000/15)*/,
468  0 /*offsetRemainder (-18000%15)*/,
469  0 /*deltaMinutes*/,
470  32767 /*untilYear*/,
471  1 /*untilMonth*/,
472  1 /*untilDay*/,
473  0 /*untilTimeCode (0/15)*/,
474  0 /*untilTimeModifier (kAtcSuffixW + seconds=0)*/,
475  },
476 
477 };
478 
479 static const char kZoneNameAmerica_New_York[] ACE_TIME_PROGMEM = "America/New_York";
480 
481 const complete::Info::ZoneInfo kZoneAmerica_New_York ACE_TIME_PROGMEM = {
482  kZoneNameAmerica_New_York /*name*/,
483  0x1e2a7654 /*zoneId*/,
484  &kZoneContext /*zoneContext*/,
485  1 /*numEras*/,
486  kZoneEraAmerica_New_York /*eras*/,
487  nullptr /*targetInfo*/,
488 };
489 
490 //---------------------------------------------------------------------------
491 // Zone name: America/Toronto
492 // Eras: 1
493 //---------------------------------------------------------------------------
494 
495 static const complete::Info::ZoneEra kZoneEraAmerica_Toronto[] ACE_TIME_PROGMEM = {
496  // -5:00 Canada E%sT
497  {
498  &kZonePolicyCanada /*zonePolicy*/,
499  "E%T" /*format*/,
500  -1200 /*offsetCode (-18000/15)*/,
501  0 /*offsetRemainder (-18000%15)*/,
502  0 /*deltaMinutes*/,
503  32767 /*untilYear*/,
504  1 /*untilMonth*/,
505  1 /*untilDay*/,
506  0 /*untilTimeCode (0/15)*/,
507  0 /*untilTimeModifier (kAtcSuffixW + seconds=0)*/,
508  },
509 
510 };
511 
512 static const char kZoneNameAmerica_Toronto[] ACE_TIME_PROGMEM = "America/Toronto";
513 
514 const complete::Info::ZoneInfo kZoneAmerica_Toronto ACE_TIME_PROGMEM = {
515  kZoneNameAmerica_Toronto /*name*/,
516  0x792e851b /*zoneId*/,
517  &kZoneContext /*zoneContext*/,
518  1 /*numEras*/,
519  kZoneEraAmerica_Toronto /*eras*/,
520  nullptr /*targetInfo*/,
521 };
522 
523 //---------------------------------------------------------------------------
524 // Zone name: America/Vancouver
525 // Eras: 2
526 //---------------------------------------------------------------------------
527 
528 static const complete::Info::ZoneEra kZoneEraAmerica_Vancouver[] ACE_TIME_PROGMEM = {
529  // -8:00 Vanc P%sT 1987
530  {
531  &kZonePolicyVanc /*zonePolicy*/,
532  "P%T" /*format*/,
533  -1920 /*offsetCode (-28800/15)*/,
534  0 /*offsetRemainder (-28800%15)*/,
535  0 /*deltaMinutes*/,
536  1987 /*untilYear*/,
537  1 /*untilMonth*/,
538  1 /*untilDay*/,
539  0 /*untilTimeCode (0/15)*/,
540  0 /*untilTimeModifier (kAtcSuffixW + seconds=0)*/,
541  },
542  // -8:00 Canada P%sT
543  {
544  &kZonePolicyCanada /*zonePolicy*/,
545  "P%T" /*format*/,
546  -1920 /*offsetCode (-28800/15)*/,
547  0 /*offsetRemainder (-28800%15)*/,
548  0 /*deltaMinutes*/,
549  32767 /*untilYear*/,
550  1 /*untilMonth*/,
551  1 /*untilDay*/,
552  0 /*untilTimeCode (0/15)*/,
553  0 /*untilTimeModifier (kAtcSuffixW + seconds=0)*/,
554  },
555 
556 };
557 
558 static const char kZoneNameAmerica_Vancouver[] ACE_TIME_PROGMEM = "America/Vancouver";
559 
560 const complete::Info::ZoneInfo kZoneAmerica_Vancouver ACE_TIME_PROGMEM = {
561  kZoneNameAmerica_Vancouver /*name*/,
562  0x2c6f6b1f /*zoneId*/,
563  &kZoneContext /*zoneContext*/,
564  2 /*numEras*/,
565  kZoneEraAmerica_Vancouver /*eras*/,
566  nullptr /*targetInfo*/,
567 };
568 
569 //---------------------------------------------------------------------------
570 // Zone name: America/Whitehorse
571 // Eras: 3
572 //---------------------------------------------------------------------------
573 
574 static const complete::Info::ZoneEra kZoneEraAmerica_Whitehorse[] ACE_TIME_PROGMEM = {
575  // -8:00 - PST 1980
576  {
577  nullptr /*zonePolicy*/,
578  "PST" /*format*/,
579  -1920 /*offsetCode (-28800/15)*/,
580  0 /*offsetRemainder (-28800%15)*/,
581  0 /*deltaMinutes*/,
582  1980 /*untilYear*/,
583  1 /*untilMonth*/,
584  1 /*untilDay*/,
585  0 /*untilTimeCode (0/15)*/,
586  0 /*untilTimeModifier (kAtcSuffixW + seconds=0)*/,
587  },
588  // -8:00 Canada P%sT 2020 Nov 1
589  {
590  &kZonePolicyCanada /*zonePolicy*/,
591  "P%T" /*format*/,
592  -1920 /*offsetCode (-28800/15)*/,
593  0 /*offsetRemainder (-28800%15)*/,
594  0 /*deltaMinutes*/,
595  2020 /*untilYear*/,
596  11 /*untilMonth*/,
597  1 /*untilDay*/,
598  0 /*untilTimeCode (0/15)*/,
599  0 /*untilTimeModifier (kAtcSuffixW + seconds=0)*/,
600  },
601  // -7:00 - MST
602  {
603  nullptr /*zonePolicy*/,
604  "MST" /*format*/,
605  -1680 /*offsetCode (-25200/15)*/,
606  0 /*offsetRemainder (-25200%15)*/,
607  0 /*deltaMinutes*/,
608  32767 /*untilYear*/,
609  1 /*untilMonth*/,
610  1 /*untilDay*/,
611  0 /*untilTimeCode (0/15)*/,
612  0 /*untilTimeModifier (kAtcSuffixW + seconds=0)*/,
613  },
614 
615 };
616 
617 static const char kZoneNameAmerica_Whitehorse[] ACE_TIME_PROGMEM = "America/Whitehorse";
618 
619 const complete::Info::ZoneInfo kZoneAmerica_Whitehorse ACE_TIME_PROGMEM = {
620  kZoneNameAmerica_Whitehorse /*name*/,
621  0x54e0e3e8 /*zoneId*/,
622  &kZoneContext /*zoneContext*/,
623  3 /*numEras*/,
624  kZoneEraAmerica_Whitehorse /*eras*/,
625  nullptr /*targetInfo*/,
626 };
627 
628 //---------------------------------------------------------------------------
629 // Zone name: America/Winnipeg
630 // Eras: 2
631 //---------------------------------------------------------------------------
632 
633 static const complete::Info::ZoneEra kZoneEraAmerica_Winnipeg[] ACE_TIME_PROGMEM = {
634  // -6:00 Winn C%sT 2006
635  {
636  &kZonePolicyWinn /*zonePolicy*/,
637  "C%T" /*format*/,
638  -1440 /*offsetCode (-21600/15)*/,
639  0 /*offsetRemainder (-21600%15)*/,
640  0 /*deltaMinutes*/,
641  2006 /*untilYear*/,
642  1 /*untilMonth*/,
643  1 /*untilDay*/,
644  0 /*untilTimeCode (0/15)*/,
645  0 /*untilTimeModifier (kAtcSuffixW + seconds=0)*/,
646  },
647  // -6:00 Canada C%sT
648  {
649  &kZonePolicyCanada /*zonePolicy*/,
650  "C%T" /*format*/,
651  -1440 /*offsetCode (-21600/15)*/,
652  0 /*offsetRemainder (-21600%15)*/,
653  0 /*deltaMinutes*/,
654  32767 /*untilYear*/,
655  1 /*untilMonth*/,
656  1 /*untilDay*/,
657  0 /*untilTimeCode (0/15)*/,
658  0 /*untilTimeModifier (kAtcSuffixW + seconds=0)*/,
659  },
660 
661 };
662 
663 static const char kZoneNameAmerica_Winnipeg[] ACE_TIME_PROGMEM = "America/Winnipeg";
664 
665 const complete::Info::ZoneInfo kZoneAmerica_Winnipeg ACE_TIME_PROGMEM = {
666  kZoneNameAmerica_Winnipeg /*name*/,
667  0x8c7dafc7 /*zoneId*/,
668  &kZoneContext /*zoneContext*/,
669  2 /*numEras*/,
670  kZoneEraAmerica_Winnipeg /*eras*/,
671  nullptr /*targetInfo*/,
672 };
673 
674 //---------------------------------------------------------------------------
675 // Zone name: Australia/Darwin
676 // Eras: 1
677 //---------------------------------------------------------------------------
678 
679 static const complete::Info::ZoneEra kZoneEraAustralia_Darwin[] ACE_TIME_PROGMEM = {
680  // 9:30 Aus AC%sT
681  {
682  &kZonePolicyAus /*zonePolicy*/,
683  "AC%T" /*format*/,
684  2280 /*offsetCode (34200/15)*/,
685  0 /*offsetRemainder (34200%15)*/,
686  0 /*deltaMinutes*/,
687  32767 /*untilYear*/,
688  1 /*untilMonth*/,
689  1 /*untilDay*/,
690  0 /*untilTimeCode (0/15)*/,
691  0 /*untilTimeModifier (kAtcSuffixW + seconds=0)*/,
692  },
693 
694 };
695 
696 static const char kZoneNameAustralia_Darwin[] ACE_TIME_PROGMEM = "Australia/Darwin";
697 
698 const complete::Info::ZoneInfo kZoneAustralia_Darwin ACE_TIME_PROGMEM = {
699  kZoneNameAustralia_Darwin /*name*/,
700  0x2876bdff /*zoneId*/,
701  &kZoneContext /*zoneContext*/,
702  1 /*numEras*/,
703  kZoneEraAustralia_Darwin /*eras*/,
704  nullptr /*targetInfo*/,
705 };
706 
707 //---------------------------------------------------------------------------
708 // Zone name: Europe/Lisbon
709 // Eras: 4
710 //---------------------------------------------------------------------------
711 
712 static const complete::Info::ZoneEra kZoneEraEurope_Lisbon[] ACE_TIME_PROGMEM = {
713  // 0:00 Port WE%sT 1986
714  {
715  &kZonePolicyPort /*zonePolicy*/,
716  "WE%T" /*format*/,
717  0 /*offsetCode (0/15)*/,
718  0 /*offsetRemainder (0%15)*/,
719  0 /*deltaMinutes*/,
720  1986 /*untilYear*/,
721  1 /*untilMonth*/,
722  1 /*untilDay*/,
723  0 /*untilTimeCode (0/15)*/,
724  0 /*untilTimeModifier (kAtcSuffixW + seconds=0)*/,
725  },
726  // 0:00 EU WE%sT 1992 Sep 27 1:00u
727  {
728  &kZonePolicyEU /*zonePolicy*/,
729  "WE%T" /*format*/,
730  0 /*offsetCode (0/15)*/,
731  0 /*offsetRemainder (0%15)*/,
732  0 /*deltaMinutes*/,
733  1992 /*untilYear*/,
734  9 /*untilMonth*/,
735  27 /*untilDay*/,
736  240 /*untilTimeCode (3600/15)*/,
737  32 /*untilTimeModifier (kAtcSuffixU + seconds=0)*/,
738  },
739  // 1:00 EU CE%sT 1996 Mar 31 1:00u
740  {
741  &kZonePolicyEU /*zonePolicy*/,
742  "CE%T" /*format*/,
743  240 /*offsetCode (3600/15)*/,
744  0 /*offsetRemainder (3600%15)*/,
745  0 /*deltaMinutes*/,
746  1996 /*untilYear*/,
747  3 /*untilMonth*/,
748  31 /*untilDay*/,
749  240 /*untilTimeCode (3600/15)*/,
750  32 /*untilTimeModifier (kAtcSuffixU + seconds=0)*/,
751  },
752  // 0:00 EU WE%sT
753  {
754  &kZonePolicyEU /*zonePolicy*/,
755  "WE%T" /*format*/,
756  0 /*offsetCode (0/15)*/,
757  0 /*offsetRemainder (0%15)*/,
758  0 /*deltaMinutes*/,
759  32767 /*untilYear*/,
760  1 /*untilMonth*/,
761  1 /*untilDay*/,
762  0 /*untilTimeCode (0/15)*/,
763  0 /*untilTimeModifier (kAtcSuffixW + seconds=0)*/,
764  },
765 
766 };
767 
768 static const char kZoneNameEurope_Lisbon[] ACE_TIME_PROGMEM = "Europe/Lisbon";
769 
770 const complete::Info::ZoneInfo kZoneEurope_Lisbon ACE_TIME_PROGMEM = {
771  kZoneNameEurope_Lisbon /*name*/,
772  0x5c00a70b /*zoneId*/,
773  &kZoneContext /*zoneContext*/,
774  4 /*numEras*/,
775  kZoneEraEurope_Lisbon /*eras*/,
776  nullptr /*targetInfo*/,
777 };
778 
779 //---------------------------------------------------------------------------
780 // Zone name: Pacific/Apia
781 // Eras: 2
782 //---------------------------------------------------------------------------
783 
784 static const complete::Info::ZoneEra kZoneEraPacific_Apia[] ACE_TIME_PROGMEM = {
785  // -11:00 WS %z 2011 Dec 29 24:00
786  {
787  &kZonePolicyWS /*zonePolicy*/,
788  "" /*format*/,
789  -2640 /*offsetCode (-39600/15)*/,
790  0 /*offsetRemainder (-39600%15)*/,
791  0 /*deltaMinutes*/,
792  2011 /*untilYear*/,
793  12 /*untilMonth*/,
794  29 /*untilDay*/,
795  5760 /*untilTimeCode (86400/15)*/,
796  0 /*untilTimeModifier (kAtcSuffixW + seconds=0)*/,
797  },
798  // 13:00 WS %z
799  {
800  &kZonePolicyWS /*zonePolicy*/,
801  "" /*format*/,
802  3120 /*offsetCode (46800/15)*/,
803  0 /*offsetRemainder (46800%15)*/,
804  0 /*deltaMinutes*/,
805  32767 /*untilYear*/,
806  1 /*untilMonth*/,
807  1 /*untilDay*/,
808  0 /*untilTimeCode (0/15)*/,
809  0 /*untilTimeModifier (kAtcSuffixW + seconds=0)*/,
810  },
811 
812 };
813 
814 static const char kZoneNamePacific_Apia[] ACE_TIME_PROGMEM = "Pacific/Apia";
815 
816 const complete::Info::ZoneInfo kZonePacific_Apia ACE_TIME_PROGMEM = {
817  kZoneNamePacific_Apia /*name*/,
818  0x23359b5e /*zoneId*/,
819  &kZoneContext /*zoneContext*/,
820  2 /*numEras*/,
821  kZoneEraPacific_Apia /*eras*/,
822  nullptr /*targetInfo*/,
823 };
824 
825 
826 
827 //---------------------------------------------------------------------------
828 // Links: 1
829 //---------------------------------------------------------------------------
830 
831 //---------------------------------------------------------------------------
832 // Link name: US/Pacific -> America/Los_Angeles
833 //---------------------------------------------------------------------------
834 
835 static const char kZoneNameUS_Pacific[] ACE_TIME_PROGMEM = "US/Pacific";
836 
837 const complete::Info::ZoneInfo kZoneUS_Pacific ACE_TIME_PROGMEM = {
838  kZoneNameUS_Pacific /*name*/,
839  0xa950f6ab /*zoneId*/,
840  &kZoneContext /*zoneContext*/,
841  1 /*numEras*/,
842  kZoneEraAmerica_Los_Angeles /*eras*/,
843  &kZoneAmerica_Los_Angeles /*targetInfo*/,
844 };
845 
846 
847 }
848 }
Macros and definitions that provide a consistency layer among the various Arduino boards for compatib...