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