Edit on GitHub

# sqlglot.time

View Source

      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]: View Source

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