Edit on GitHub

sqlglot.time

  1import typing as t
  2
  3# The generic time format is based on python time.strftime.
  4# https://docs.python.org/3/library/time.html#time.strftime
  5from sqlglot.trie import TrieResult, in_trie, new_trie
  6
  7
  8def format_time(
  9    string: str, mapping: t.Dict[str, str], trie: t.Optional[t.Dict] = None
 10) -> t.Optional[str]:
 11    """
 12    Converts a time string given a mapping.
 13
 14    Examples:
 15        >>> format_time("%Y", {"%Y": "YYYY"})
 16        'YYYY'
 17
 18        Args:
 19            mapping: dictionary of time format to target time format.
 20            trie: optional trie, can be passed in for performance.
 21
 22        Returns:
 23            The converted time string.
 24    """
 25    if not string:
 26        return None
 27
 28    start = 0
 29    end = 1
 30    size = len(string)
 31    trie = trie or new_trie(mapping)
 32    current = trie
 33    chunks = []
 34    sym = None
 35
 36    while end <= size:
 37        chars = string[start:end]
 38        result, current = in_trie(current, chars[-1])
 39
 40        if result == TrieResult.FAILED:
 41            if sym:
 42                end -= 1
 43                chars = sym
 44                sym = None
 45            else:
 46                chars = chars[0]
 47                end = start + 1
 48
 49            start += len(chars)
 50            chunks.append(chars)
 51            current = trie
 52        elif result == TrieResult.EXISTS:
 53            sym = chars
 54
 55        end += 1
 56
 57        if result != TrieResult.FAILED and end > size:
 58            chunks.append(chars)
 59
 60    return "".join(mapping.get(chars, chars) for chars in chunks)
 61
 62
 63TIMEZONES = {
 64    tz.lower()
 65    for tz in (
 66        "Africa/Abidjan",
 67        "Africa/Accra",
 68        "Africa/Addis_Ababa",
 69        "Africa/Algiers",
 70        "Africa/Asmara",
 71        "Africa/Asmera",
 72        "Africa/Bamako",
 73        "Africa/Bangui",
 74        "Africa/Banjul",
 75        "Africa/Bissau",
 76        "Africa/Blantyre",
 77        "Africa/Brazzaville",
 78        "Africa/Bujumbura",
 79        "Africa/Cairo",
 80        "Africa/Casablanca",
 81        "Africa/Ceuta",
 82        "Africa/Conakry",
 83        "Africa/Dakar",
 84        "Africa/Dar_es_Salaam",
 85        "Africa/Djibouti",
 86        "Africa/Douala",
 87        "Africa/El_Aaiun",
 88        "Africa/Freetown",
 89        "Africa/Gaborone",
 90        "Africa/Harare",
 91        "Africa/Johannesburg",
 92        "Africa/Juba",
 93        "Africa/Kampala",
 94        "Africa/Khartoum",
 95        "Africa/Kigali",
 96        "Africa/Kinshasa",
 97        "Africa/Lagos",
 98        "Africa/Libreville",
 99        "Africa/Lome",
100        "Africa/Luanda",
101        "Africa/Lubumbashi",
102        "Africa/Lusaka",
103        "Africa/Malabo",
104        "Africa/Maputo",
105        "Africa/Maseru",
106        "Africa/Mbabane",
107        "Africa/Mogadishu",
108        "Africa/Monrovia",
109        "Africa/Nairobi",
110        "Africa/Ndjamena",
111        "Africa/Niamey",
112        "Africa/Nouakchott",
113        "Africa/Ouagadougou",
114        "Africa/Porto-Novo",
115        "Africa/Sao_Tome",
116        "Africa/Timbuktu",
117        "Africa/Tripoli",
118        "Africa/Tunis",
119        "Africa/Windhoek",
120        "America/Adak",
121        "America/Anchorage",
122        "America/Anguilla",
123        "America/Antigua",
124        "America/Araguaina",
125        "America/Argentina/Buenos_Aires",
126        "America/Argentina/Catamarca",
127        "America/Argentina/ComodRivadavia",
128        "America/Argentina/Cordoba",
129        "America/Argentina/Jujuy",
130        "America/Argentina/La_Rioja",
131        "America/Argentina/Mendoza",
132        "America/Argentina/Rio_Gallegos",
133        "America/Argentina/Salta",
134        "America/Argentina/San_Juan",
135        "America/Argentina/San_Luis",
136        "America/Argentina/Tucuman",
137        "America/Argentina/Ushuaia",
138        "America/Aruba",
139        "America/Asuncion",
140        "America/Atikokan",
141        "America/Atka",
142        "America/Bahia",
143        "America/Bahia_Banderas",
144        "America/Barbados",
145        "America/Belem",
146        "America/Belize",
147        "America/Blanc-Sablon",
148        "America/Boa_Vista",
149        "America/Bogota",
150        "America/Boise",
151        "America/Buenos_Aires",
152        "America/Cambridge_Bay",
153        "America/Campo_Grande",
154        "America/Cancun",
155        "America/Caracas",
156        "America/Catamarca",
157        "America/Cayenne",
158        "America/Cayman",
159        "America/Chicago",
160        "America/Chihuahua",
161        "America/Ciudad_Juarez",
162        "America/Coral_Harbour",
163        "America/Cordoba",
164        "America/Costa_Rica",
165        "America/Creston",
166        "America/Cuiaba",
167        "America/Curacao",
168        "America/Danmarkshavn",
169        "America/Dawson",
170        "America/Dawson_Creek",
171        "America/Denver",
172        "America/Detroit",
173        "America/Dominica",
174        "America/Edmonton",
175        "America/Eirunepe",
176        "America/El_Salvador",
177        "America/Ensenada",
178        "America/Fort_Nelson",
179        "America/Fort_Wayne",
180        "America/Fortaleza",
181        "America/Glace_Bay",
182        "America/Godthab",
183        "America/Goose_Bay",
184        "America/Grand_Turk",
185        "America/Grenada",
186        "America/Guadeloupe",
187        "America/Guatemala",
188        "America/Guayaquil",
189        "America/Guyana",
190        "America/Halifax",
191        "America/Havana",
192        "America/Hermosillo",
193        "America/Indiana/Indianapolis",
194        "America/Indiana/Knox",
195        "America/Indiana/Marengo",
196        "America/Indiana/Petersburg",
197        "America/Indiana/Tell_City",
198        "America/Indiana/Vevay",
199        "America/Indiana/Vincennes",
200        "America/Indiana/Winamac",
201        "America/Indianapolis",
202        "America/Inuvik",
203        "America/Iqaluit",
204        "America/Jamaica",
205        "America/Jujuy",
206        "America/Juneau",
207        "America/Kentucky/Louisville",
208        "America/Kentucky/Monticello",
209        "America/Knox_IN",
210        "America/Kralendijk",
211        "America/La_Paz",
212        "America/Lima",
213        "America/Los_Angeles",
214        "America/Louisville",
215        "America/Lower_Princes",
216        "America/Maceio",
217        "America/Managua",
218        "America/Manaus",
219        "America/Marigot",
220        "America/Martinique",
221        "America/Matamoros",
222        "America/Mazatlan",
223        "America/Mendoza",
224        "America/Menominee",
225        "America/Merida",
226        "America/Metlakatla",
227        "America/Mexico_City",
228        "America/Miquelon",
229        "America/Moncton",
230        "America/Monterrey",
231        "America/Montevideo",
232        "America/Montreal",
233        "America/Montserrat",
234        "America/Nassau",
235        "America/New_York",
236        "America/Nipigon",
237        "America/Nome",
238        "America/Noronha",
239        "America/North_Dakota/Beulah",
240        "America/North_Dakota/Center",
241        "America/North_Dakota/New_Salem",
242        "America/Nuuk",
243        "America/Ojinaga",
244        "America/Panama",
245        "America/Pangnirtung",
246        "America/Paramaribo",
247        "America/Phoenix",
248        "America/Port-au-Prince",
249        "America/Port_of_Spain",
250        "America/Porto_Acre",
251        "America/Porto_Velho",
252        "America/Puerto_Rico",
253        "America/Punta_Arenas",
254        "America/Rainy_River",
255        "America/Rankin_Inlet",
256        "America/Recife",
257        "America/Regina",
258        "America/Resolute",
259        "America/Rio_Branco",
260        "America/Rosario",
261        "America/Santa_Isabel",
262        "America/Santarem",
263        "America/Santiago",
264        "America/Santo_Domingo",
265        "America/Sao_Paulo",
266        "America/Scoresbysund",
267        "America/Shiprock",
268        "America/Sitka",
269        "America/St_Barthelemy",
270        "America/St_Johns",
271        "America/St_Kitts",
272        "America/St_Lucia",
273        "America/St_Thomas",
274        "America/St_Vincent",
275        "America/Swift_Current",
276        "America/Tegucigalpa",
277        "America/Thule",
278        "America/Thunder_Bay",
279        "America/Tijuana",
280        "America/Toronto",
281        "America/Tortola",
282        "America/Vancouver",
283        "America/Virgin",
284        "America/Whitehorse",
285        "America/Winnipeg",
286        "America/Yakutat",
287        "America/Yellowknife",
288        "Antarctica/Casey",
289        "Antarctica/Davis",
290        "Antarctica/DumontDUrville",
291        "Antarctica/Macquarie",
292        "Antarctica/Mawson",
293        "Antarctica/McMurdo",
294        "Antarctica/Palmer",
295        "Antarctica/Rothera",
296        "Antarctica/South_Pole",
297        "Antarctica/Syowa",
298        "Antarctica/Troll",
299        "Antarctica/Vostok",
300        "Arctic/Longyearbyen",
301        "Asia/Aden",
302        "Asia/Almaty",
303        "Asia/Amman",
304        "Asia/Anadyr",
305        "Asia/Aqtau",
306        "Asia/Aqtobe",
307        "Asia/Ashgabat",
308        "Asia/Ashkhabad",
309        "Asia/Atyrau",
310        "Asia/Baghdad",
311        "Asia/Bahrain",
312        "Asia/Baku",
313        "Asia/Bangkok",
314        "Asia/Barnaul",
315        "Asia/Beirut",
316        "Asia/Bishkek",
317        "Asia/Brunei",
318        "Asia/Calcutta",
319        "Asia/Chita",
320        "Asia/Choibalsan",
321        "Asia/Chongqing",
322        "Asia/Chungking",
323        "Asia/Colombo",
324        "Asia/Dacca",
325        "Asia/Damascus",
326        "Asia/Dhaka",
327        "Asia/Dili",
328        "Asia/Dubai",
329        "Asia/Dushanbe",
330        "Asia/Famagusta",
331        "Asia/Gaza",
332        "Asia/Harbin",
333        "Asia/Hebron",
334        "Asia/Ho_Chi_Minh",
335        "Asia/Hong_Kong",
336        "Asia/Hovd",
337        "Asia/Irkutsk",
338        "Asia/Istanbul",
339        "Asia/Jakarta",
340        "Asia/Jayapura",
341        "Asia/Jerusalem",
342        "Asia/Kabul",
343        "Asia/Kamchatka",
344        "Asia/Karachi",
345        "Asia/Kashgar",
346        "Asia/Kathmandu",
347        "Asia/Katmandu",
348        "Asia/Khandyga",
349        "Asia/Kolkata",
350        "Asia/Krasnoyarsk",
351        "Asia/Kuala_Lumpur",
352        "Asia/Kuching",
353        "Asia/Kuwait",
354        "Asia/Macao",
355        "Asia/Macau",
356        "Asia/Magadan",
357        "Asia/Makassar",
358        "Asia/Manila",
359        "Asia/Muscat",
360        "Asia/Nicosia",
361        "Asia/Novokuznetsk",
362        "Asia/Novosibirsk",
363        "Asia/Omsk",
364        "Asia/Oral",
365        "Asia/Phnom_Penh",
366        "Asia/Pontianak",
367        "Asia/Pyongyang",
368        "Asia/Qatar",
369        "Asia/Qostanay",
370        "Asia/Qyzylorda",
371        "Asia/Rangoon",
372        "Asia/Riyadh",
373        "Asia/Saigon",
374        "Asia/Sakhalin",
375        "Asia/Samarkand",
376        "Asia/Seoul",
377        "Asia/Shanghai",
378        "Asia/Singapore",
379        "Asia/Srednekolymsk",
380        "Asia/Taipei",
381        "Asia/Tashkent",
382        "Asia/Tbilisi",
383        "Asia/Tehran",
384        "Asia/Tel_Aviv",
385        "Asia/Thimbu",
386        "Asia/Thimphu",
387        "Asia/Tokyo",
388        "Asia/Tomsk",
389        "Asia/Ujung_Pandang",
390        "Asia/Ulaanbaatar",
391        "Asia/Ulan_Bator",
392        "Asia/Urumqi",
393        "Asia/Ust-Nera",
394        "Asia/Vientiane",
395        "Asia/Vladivostok",
396        "Asia/Yakutsk",
397        "Asia/Yangon",
398        "Asia/Yekaterinburg",
399        "Asia/Yerevan",
400        "Atlantic/Azores",
401        "Atlantic/Bermuda",
402        "Atlantic/Canary",
403        "Atlantic/Cape_Verde",
404        "Atlantic/Faeroe",
405        "Atlantic/Faroe",
406        "Atlantic/Jan_Mayen",
407        "Atlantic/Madeira",
408        "Atlantic/Reykjavik",
409        "Atlantic/South_Georgia",
410        "Atlantic/St_Helena",
411        "Atlantic/Stanley",
412        "Australia/ACT",
413        "Australia/Adelaide",
414        "Australia/Brisbane",
415        "Australia/Broken_Hill",
416        "Australia/Canberra",
417        "Australia/Currie",
418        "Australia/Darwin",
419        "Australia/Eucla",
420        "Australia/Hobart",
421        "Australia/LHI",
422        "Australia/Lindeman",
423        "Australia/Lord_Howe",
424        "Australia/Melbourne",
425        "Australia/NSW",
426        "Australia/North",
427        "Australia/Perth",
428        "Australia/Queensland",
429        "Australia/South",
430        "Australia/Sydney",
431        "Australia/Tasmania",
432        "Australia/Victoria",
433        "Australia/West",
434        "Australia/Yancowinna",
435        "Brazil/Acre",
436        "Brazil/DeNoronha",
437        "Brazil/East",
438        "Brazil/West",
439        "CET",
440        "CST6CDT",
441        "Canada/Atlantic",
442        "Canada/Central",
443        "Canada/Eastern",
444        "Canada/Mountain",
445        "Canada/Newfoundland",
446        "Canada/Pacific",
447        "Canada/Saskatchewan",
448        "Canada/Yukon",
449        "Chile/Continental",
450        "Chile/EasterIsland",
451        "Cuba",
452        "EET",
453        "EST",
454        "EST5EDT",
455        "Egypt",
456        "Eire",
457        "Etc/GMT",
458        "Etc/GMT+0",
459        "Etc/GMT+1",
460        "Etc/GMT+10",
461        "Etc/GMT+11",
462        "Etc/GMT+12",
463        "Etc/GMT+2",
464        "Etc/GMT+3",
465        "Etc/GMT+4",
466        "Etc/GMT+5",
467        "Etc/GMT+6",
468        "Etc/GMT+7",
469        "Etc/GMT+8",
470        "Etc/GMT+9",
471        "Etc/GMT-0",
472        "Etc/GMT-1",
473        "Etc/GMT-10",
474        "Etc/GMT-11",
475        "Etc/GMT-12",
476        "Etc/GMT-13",
477        "Etc/GMT-14",
478        "Etc/GMT-2",
479        "Etc/GMT-3",
480        "Etc/GMT-4",
481        "Etc/GMT-5",
482        "Etc/GMT-6",
483        "Etc/GMT-7",
484        "Etc/GMT-8",
485        "Etc/GMT-9",
486        "Etc/GMT0",
487        "Etc/Greenwich",
488        "Etc/UCT",
489        "Etc/UTC",
490        "Etc/Universal",
491        "Etc/Zulu",
492        "Europe/Amsterdam",
493        "Europe/Andorra",
494        "Europe/Astrakhan",
495        "Europe/Athens",
496        "Europe/Belfast",
497        "Europe/Belgrade",
498        "Europe/Berlin",
499        "Europe/Bratislava",
500        "Europe/Brussels",
501        "Europe/Bucharest",
502        "Europe/Budapest",
503        "Europe/Busingen",
504        "Europe/Chisinau",
505        "Europe/Copenhagen",
506        "Europe/Dublin",
507        "Europe/Gibraltar",
508        "Europe/Guernsey",
509        "Europe/Helsinki",
510        "Europe/Isle_of_Man",
511        "Europe/Istanbul",
512        "Europe/Jersey",
513        "Europe/Kaliningrad",
514        "Europe/Kiev",
515        "Europe/Kirov",
516        "Europe/Kyiv",
517        "Europe/Lisbon",
518        "Europe/Ljubljana",
519        "Europe/London",
520        "Europe/Luxembourg",
521        "Europe/Madrid",
522        "Europe/Malta",
523        "Europe/Mariehamn",
524        "Europe/Minsk",
525        "Europe/Monaco",
526        "Europe/Moscow",
527        "Europe/Nicosia",
528        "Europe/Oslo",
529        "Europe/Paris",
530        "Europe/Podgorica",
531        "Europe/Prague",
532        "Europe/Riga",
533        "Europe/Rome",
534        "Europe/Samara",
535        "Europe/San_Marino",
536        "Europe/Sarajevo",
537        "Europe/Saratov",
538        "Europe/Simferopol",
539        "Europe/Skopje",
540        "Europe/Sofia",
541        "Europe/Stockholm",
542        "Europe/Tallinn",
543        "Europe/Tirane",
544        "Europe/Tiraspol",
545        "Europe/Ulyanovsk",
546        "Europe/Uzhgorod",
547        "Europe/Vaduz",
548        "Europe/Vatican",
549        "Europe/Vienna",
550        "Europe/Vilnius",
551        "Europe/Volgograd",
552        "Europe/Warsaw",
553        "Europe/Zagreb",
554        "Europe/Zaporozhye",
555        "Europe/Zurich",
556        "GB",
557        "GB-Eire",
558        "GMT",
559        "GMT+0",
560        "GMT-0",
561        "GMT0",
562        "Greenwich",
563        "HST",
564        "Hongkong",
565        "Iceland",
566        "Indian/Antananarivo",
567        "Indian/Chagos",
568        "Indian/Christmas",
569        "Indian/Cocos",
570        "Indian/Comoro",
571        "Indian/Kerguelen",
572        "Indian/Mahe",
573        "Indian/Maldives",
574        "Indian/Mauritius",
575        "Indian/Mayotte",
576        "Indian/Reunion",
577        "Iran",
578        "Israel",
579        "Jamaica",
580        "Japan",
581        "Kwajalein",
582        "Libya",
583        "MET",
584        "MST",
585        "MST7MDT",
586        "Mexico/BajaNorte",
587        "Mexico/BajaSur",
588        "Mexico/General",
589        "NZ",
590        "NZ-CHAT",
591        "Navajo",
592        "PRC",
593        "PST8PDT",
594        "Pacific/Apia",
595        "Pacific/Auckland",
596        "Pacific/Bougainville",
597        "Pacific/Chatham",
598        "Pacific/Chuuk",
599        "Pacific/Easter",
600        "Pacific/Efate",
601        "Pacific/Enderbury",
602        "Pacific/Fakaofo",
603        "Pacific/Fiji",
604        "Pacific/Funafuti",
605        "Pacific/Galapagos",
606        "Pacific/Gambier",
607        "Pacific/Guadalcanal",
608        "Pacific/Guam",
609        "Pacific/Honolulu",
610        "Pacific/Johnston",
611        "Pacific/Kanton",
612        "Pacific/Kiritimati",
613        "Pacific/Kosrae",
614        "Pacific/Kwajalein",
615        "Pacific/Majuro",
616        "Pacific/Marquesas",
617        "Pacific/Midway",
618        "Pacific/Nauru",
619        "Pacific/Niue",
620        "Pacific/Norfolk",
621        "Pacific/Noumea",
622        "Pacific/Pago_Pago",
623        "Pacific/Palau",
624        "Pacific/Pitcairn",
625        "Pacific/Pohnpei",
626        "Pacific/Ponape",
627        "Pacific/Port_Moresby",
628        "Pacific/Rarotonga",
629        "Pacific/Saipan",
630        "Pacific/Samoa",
631        "Pacific/Tahiti",
632        "Pacific/Tarawa",
633        "Pacific/Tongatapu",
634        "Pacific/Truk",
635        "Pacific/Wake",
636        "Pacific/Wallis",
637        "Pacific/Yap",
638        "Poland",
639        "Portugal",
640        "ROC",
641        "ROK",
642        "Singapore",
643        "Turkey",
644        "UCT",
645        "US/Alaska",
646        "US/Aleutian",
647        "US/Arizona",
648        "US/Central",
649        "US/East-Indiana",
650        "US/Eastern",
651        "US/Hawaii",
652        "US/Indiana-Starke",
653        "US/Michigan",
654        "US/Mountain",
655        "US/Pacific",
656        "US/Samoa",
657        "UTC",
658        "Universal",
659        "W-SU",
660        "WET",
661        "Zulu",
662    )
663}
def format_time( string: str, mapping: Dict[str, str], trie: Optional[Dict] = None) -> Optional[str]:
 9def format_time(
10    string: str, mapping: t.Dict[str, str], trie: t.Optional[t.Dict] = None
11) -> t.Optional[str]:
12    """
13    Converts a time string given a mapping.
14
15    Examples:
16        >>> format_time("%Y", {"%Y": "YYYY"})
17        'YYYY'
18
19        Args:
20            mapping: dictionary of time format to target time format.
21            trie: optional trie, can be passed in for performance.
22
23        Returns:
24            The converted time string.
25    """
26    if not string:
27        return None
28
29    start = 0
30    end = 1
31    size = len(string)
32    trie = trie or new_trie(mapping)
33    current = trie
34    chunks = []
35    sym = None
36
37    while end <= size:
38        chars = string[start:end]
39        result, current = in_trie(current, chars[-1])
40
41        if result == TrieResult.FAILED:
42            if sym:
43                end -= 1
44                chars = sym
45                sym = None
46            else:
47                chars = chars[0]
48                end = start + 1
49
50            start += len(chars)
51            chunks.append(chars)
52            current = trie
53        elif result == TrieResult.EXISTS:
54            sym = chars
55
56        end += 1
57
58        if result != TrieResult.FAILED and end > size:
59            chunks.append(chars)
60
61    return "".join(mapping.get(chars, chars) for chars in chunks)

Converts a time string given a mapping.

Examples:
>>> format_time("%Y", {"%Y": "YYYY"})
'YYYY'

Args: mapping: dictionary of time format to target time format. trie: optional trie, can be passed in for performance.

Returns: The converted time string.

TIMEZONES = {'canada/atlantic', 'america/paramaribo', 'america/rankin_inlet', 'pacific/johnston', 'australia/eucla', 'etc/gmt-14', 'africa/lagos', 'nz-chat', 'africa/mbabane', 'asia/aqtobe', 'us/samoa', 'america/dominica', 'portugal', 'america/guadeloupe', 'america/st_vincent', 'europe/volgograd', 'atlantic/madeira', 'gb-eire', 'etc/gmt-10', 'america/miquelon', 'etc/gmt+12', 'america/shiprock', 'america/grand_turk', 'atlantic/jan_mayen', 'america/bahia_banderas', 'europe/malta', 'asia/damascus', 'asia/qostanay', 'gmt', 'america/montevideo', 'asia/yangon', 'asia/taipei', 'europe/samara', 'antarctica/syowa', 'asia/kathmandu', 'canada/eastern', 'europe/zurich', 'america/santo_domingo', 'eet', 'america/manaus', 'africa/dakar', 'europe/ljubljana', 'america/sao_paulo', 'europe/astrakhan', 'europe/vaduz', 'pacific/noumea', 'asia/karachi', 'us/michigan', 'asia/gaza', 'africa/brazzaville', 'europe/kirov', 'europe/mariehamn', 'europe/sarajevo', 'antarctica/vostok', 'antarctica/davis', 'africa/cairo', 'america/montreal', 'gmt+0', 'antarctica/mcmurdo', 'africa/timbuktu', 'etc/gmt+6', 'america/managua', 'america/buenos_aires', 'africa/dar_es_salaam', 'asia/istanbul', 'australia/north', 'universal', 'us/pacific', 'pacific/majuro', 'asia/bahrain', 'etc/zulu', 'etc/gmt-6', 'asia/ulan_bator', 'africa/monrovia', 'europe/prague', 'mst', 'est', 'wet', 'asia/kuching', 'america/santarem', 'chile/continental', 'america/hermosillo', 'america/boa_vista', 'america/lower_princes', 'asia/srednekolymsk', 'pacific/kiritimati', 'america/st_johns', 'asia/ashkhabad', 'europe/riga', 'america/rainy_river', 'america/los_angeles', 'europe/tirane', 'brazil/east', 'america/bogota', 'america/yakutat', 'asia/almaty', 'asia/yerevan', 'america/panama', 'gb', 'pacific/truk', 'asia/pontianak', 'europe/kaliningrad', 'america/antigua', 'africa/douala', 'asia/amman', 'america/campo_grande', 'america/menominee', 'america/kentucky/louisville', 'america/pangnirtung', 'australia/currie', 'europe/tiraspol', 'africa/mogadishu', 'america/atikokan', 'pacific/efate', 'asia/yakutsk', 'atlantic/canary', 'africa/lusaka', 'africa/lome', 'asia/omsk', 'asia/ust-nera', 'africa/asmera', 'etc/gmt-8', 'america/indiana/vevay', 'america/cancun', 'america/argentina/san_juan', 'africa/blantyre', 'america/fortaleza', 'pacific/tongatapu', 'pacific/norfolk', 'asia/calcutta', 'pacific/apia', 'indian/mauritius', 'asia/qyzylorda', 'europe/monaco', 'america/creston', 'etc/gmt+9', 'america/punta_arenas', 'america/anchorage', 'america/indianapolis', 'cet', 'us/aleutian', 'nz', 'america/coral_harbour', 'etc/gmt+8', 'america/monterrey', 'gmt-0', 'europe/zagreb', 'us/indiana-starke', 'indian/reunion', 'us/alaska', 'america/knox_in', 'america/rio_branco', 'america/tegucigalpa', 'asia/manila', 'atlantic/faeroe', 'europe/amsterdam', 'etc/gmt-11', 'europe/vienna', 'greenwich', 'america/halifax', 'w-su', 'america/guayaquil', 'etc/gmt+7', 'arctic/longyearbyen', 'asia/kuwait', 'asia/baku', 'europe/madrid', 'australia/tasmania', 'pacific/marquesas', 'america/cordoba', 'canada/central', 'pacific/kwajalein', 'europe/stockholm', 'america/argentina/comodrivadavia', 'africa/addis_ababa', 'etc/gmt+0', 'antarctica/rothera', 'pacific/fiji', 'america/porto_velho', 'gmt0', 'america/thule', 'asia/aden', 'america/costa_rica', 'america/moncton', 'pacific/pago_pago', 'america/vancouver', 'asia/ashgabat', 'asia/phnom_penh', 'africa/gaborone', 'america/port_of_spain', 'asia/dili', 'asia/riyadh', 'america/anguilla', 'africa/kampala', 'australia/broken_hill', 'america/argentina/mendoza', 'etc/gmt-0', 'atlantic/cape_verde', 'antarctica/mawson', 'asia/jayapura', 'asia/macau', 'antarctica/casey', 'asia/kabul', 'america/santiago', 'america/aruba', 'met', 'africa/luanda', 'america/godthab', 'africa/ouagadougou', 'africa/niamey', 'africa/porto-novo', 'australia/sydney', 'pacific/chuuk', 'america/porto_acre', 'america/goose_bay', 'america/araguaina', 'america/new_york', 'us/hawaii', 'america/chicago', 'asia/hovd', 'america/nome', 'europe/minsk', 'america/cuiaba', 'america/indiana/winamac', 'australia/lhi', 'etc/gmt', 'america/dawson_creek', 'europe/zaporozhye', 'etc/gmt-13', 'asia/dubai', 'us/mountain', 'zulu', 'asia/tomsk', 'asia/novosibirsk', 'etc/gmt-5', 'indian/cocos', 'asia/chongqing', 'pacific/wake', 'america/martinique', 'america/argentina/rio_gallegos', 'atlantic/south_georgia', 'america/argentina/jujuy', 'asia/shanghai', 'etc/gmt-1', 'america/belem', 'israel', 'europe/bucharest', 'africa/malabo', 'jamaica', 'asia/muscat', 'america/st_lucia', 'asia/singapore', 'europe/tallinn', 'america/caracas', 'africa/libreville', 'america/cayman', 'indian/mayotte', 'europe/simferopol', 'pacific/pitcairn', 'america/havana', 'australia/queensland', 'atlantic/bermuda', 'europe/chisinau', 'asia/beirut', 'america/st_barthelemy', 'africa/harare', 'canada/saskatchewan', 'pacific/nauru', 'africa/bangui', 'america/guyana', 'antarctica/dumontdurville', 'america/ojinaga', 'australia/melbourne', 'etc/uct', 'asia/hebron', 'pacific/port_moresby', 'pacific/guam', 'america/argentina/tucuman', 'us/central', 'europe/vatican', 'america/la_paz', 'europe/skopje', 'australia/south', 'europe/berlin', 'canada/mountain', 'america/maceio', 'america/resolute', 'uct', 'pst8pdt', 'kwajalein', 'america/thunder_bay', 'canada/newfoundland', 'africa/banjul', 'africa/tunis', 'indian/comoro', 'atlantic/azores', 'australia/lord_howe', 'america/glace_bay', 'australia/nsw', 'us/east-indiana', 'america/yellowknife', 'europe/belgrade', 'europe/bratislava', 'africa/djibouti', 'asia/kamchatka', 'europe/rome', 'america/argentina/salta', 'asia/makassar', 'asia/ulaanbaatar', 'america/phoenix', 'america/merida', 'america/santa_isabel', 'antarctica/troll', 'asia/harbin', 'asia/tel_aviv', 'asia/khandyga', 'america/indiana/indianapolis', 'america/lima', 'america/mazatlan', 'pacific/palau', 'mexico/bajanorte', 'africa/casablanca', 'asia/tehran', 'america/tortola', 'asia/nicosia', 'asia/oral', 'chile/easterisland', 'europe/uzhgorod', 'etc/gmt+3', 'iceland', 'america/indiana/petersburg', 'africa/nouakchott', 'america/el_salvador', 'america/belize', 'pacific/ponape', 'asia/tbilisi', 'america/blanc-sablon', 'america/eirunepe', 'asia/brunei', 'asia/thimbu', 'america/toronto', 'australia/yancowinna', 'america/virgin', 'europe/gibraltar', 'africa/johannesburg', 'america/st_thomas', 'america/indiana/vincennes', 'canada/yukon', 'navajo', 'america/mendoza', 'asia/choibalsan', 'africa/accra', 'europe/copenhagen', 'australia/victoria', 'asia/dhaka', 'europe/saratov', 'america/cambridge_bay', 'america/port-au-prince', 'america/boise', 'australia/darwin', 'america/ciudad_juarez', 'asia/ho_chi_minh', 'pacific/rarotonga', 'america/argentina/buenos_aires', 'indian/christmas', 'america/nuuk', 'etc/gmt+2', 'mexico/bajasur', 'asia/thimphu', 'atlantic/stanley', 'australia/adelaide', 'pacific/wallis', 'hongkong', 'asia/vientiane', 'america/denver', 'europe/jersey', 'pacific/samoa', 'pacific/midway', 'asia/jerusalem', 'america/montserrat', 'australia/act', 'pacific/pohnpei', 'europe/san_marino', 'africa/freetown', 'america/kralendijk', 'asia/bishkek', 'asia/rangoon', 'etc/gmt-2', 'africa/kinshasa', 'america/indiana/knox', 'america/argentina/cordoba', 'etc/gmt+4', 'australia/brisbane', 'america/chihuahua', 'asia/samarkand', 'pacific/fakaofo', 'europe/guernsey', 'america/puerto_rico', 'eire', 'asia/yekaterinburg', 'africa/tripoli', 'europe/oslo', 'etc/gmt-9', 'indian/maldives', 'us/eastern', 'europe/london', 'america/st_kitts', 'asia/katmandu', 'america/rosario', 'america/argentina/ushuaia', 'america/metlakatla', 'pacific/gambier', 'etc/gmt-3', 'atlantic/st_helena', 'pacific/bougainville', 'europe/warsaw', 'pacific/funafuti', 'europe/luxembourg', 'asia/qatar', 'africa/ndjamena', 'africa/windhoek', 'europe/kiev', 'etc/gmt+5', 'america/jujuy', 'etc/gmt-7', 'asia/tokyo', 'pacific/kosrae', 'america/curacao', 'singapore', 'pacific/yap', 'europe/dublin', 'america/jamaica', 'europe/paris', 'asia/tashkent', 'canada/pacific', 'america/fort_nelson', 'america/louisville', 'america/sitka', 'japan', 'pacific/tahiti', 'asia/anadyr', 'roc', 'europe/budapest', 'america/atka', 'asia/jakarta', 'africa/conakry', 'asia/kuala_lumpur', 'america/indiana/marengo', 'etc/greenwich', 'america/matamoros', 'africa/el_aaiun', 'africa/asmara', 'asia/urumqi', 'africa/nairobi', 'america/swift_current', 'asia/colombo', 'pacific/tarawa', 'america/inuvik', 'africa/algiers', 'america/scoresbysund', 'pacific/guadalcanal', 'mst7mdt', 'asia/kolkata', 'pacific/saipan', 'africa/bissau', 'america/argentina/catamarca', 'est5edt', 'europe/ulyanovsk', 'europe/istanbul', 'asia/chungking', 'europe/moscow', 'africa/abidjan', 'america/marigot', 'asia/baghdad', 'atlantic/faroe', 'brazil/west', 'brazil/denoronha', 'america/fort_wayne', 'cst6cdt', 'hst', 'america/winnipeg', 'australia/west', 'egypt', 'africa/bujumbura', 'asia/chita', 'asia/ujung_pandang', 'etc/gmt+11', 'europe/athens', 'etc/gmt+10', 'america/bahia', 'australia/hobart', 'africa/lubumbashi', 'america/north_dakota/center', 'europe/sofia', 'america/north_dakota/new_salem', 'america/north_dakota/beulah', 'asia/barnaul', 'etc/gmt+1', 'pacific/galapagos', 'us/arizona', 'america/dawson', 'antarctica/south_pole', 'pacific/honolulu', 'america/nassau', 'america/iqaluit', 'atlantic/reykjavik', 'asia/irkutsk', 'africa/juba', 'america/mexico_city', 'america/kentucky/monticello', 'africa/sao_tome', 'antarctica/macquarie', 'etc/gmt-12', 'america/adak', 'asia/sakhalin', 'indian/chagos', 'america/ensenada', 'america/grenada', 'europe/isle_of_man', 'australia/canberra', 'asia/pyongyang', 'asia/krasnoyarsk', 'africa/ceuta', 'asia/kashgar', 'indian/kerguelen', 'turkey', 'australia/lindeman', 'america/noronha', 'pacific/easter', 'america/recife', 'america/tijuana', 'cuba', 'etc/gmt-4', 'etc/utc', 'europe/podgorica', 'america/catamarca', 'pacific/auckland', 'asia/dacca', 'america/argentina/la_rioja', 'america/detroit', 'poland', 'asia/magadan', 'mexico/general', 'indian/antananarivo', 'europe/nicosia', 'africa/khartoum', 'europe/brussels', 'africa/kigali', 'asia/saigon', 'rok', 'asia/dushanbe', 'america/barbados', 'iran', 'pacific/chatham', 'pacific/enderbury', 'america/danmarkshavn', 'asia/vladivostok', 'america/guatemala', 'america/regina', 'utc', 'asia/macao', 'america/asuncion', 'prc', 'africa/bamako', 'etc/universal', 'europe/kyiv', 'pacific/kanton', 'asia/bangkok', 'america/indiana/tell_city', 'libya', 'america/edmonton', 'europe/belfast', 'asia/atyrau', 'america/nipigon', 'indian/mahe', 'africa/maseru', 'america/whitehorse', 'antarctica/palmer', 'brazil/acre', 'america/juneau', 'europe/busingen', 'europe/vilnius', 'america/argentina/san_luis', 'asia/novokuznetsk', 'asia/seoul', 'pacific/niue', 'asia/famagusta', 'africa/maputo', 'europe/andorra', 'asia/hong_kong', 'europe/lisbon', 'etc/gmt0', 'australia/perth', 'asia/aqtau', 'america/cayenne', 'europe/helsinki'}