pygeoip.timezone

Package pygeoip :: Module timezone |
[frames] | no frames]

# Source Code for Module pygeoip.timezone

      1  # -*- coding: utf-8 -*-
      2  """
      3  Time zone data and lookup function
      4
      5  @author: Jennifer Ennis <zaylea@gmail.com>
      6  @author: William Tisäter <william@defunct.cc>
      7
      8  @license: Copyright(C) 2004 MaxMind LLC
      9
     10  This program is free software: you can redistribute it and/or modify
     11  it under the terms of the GNU Lesser General Public License as published by
     12  the Free Software Foundation, either version 3 of the License, or
     13  (at your option) any later version.
     14
     15  This program is distributed in the hope that it will be useful,
     16  but WITHOUT ANY WARRANTY; without even the implied warranty of
     17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     18  GNU General Public License for more details.
     19
     20  You should have received a copy of the GNU Lesser General Public License
     21  along with this program.  If not, see <http://www.gnu.org/licenses/lgpl.txt>.
     22  """
     23
     24
     25 -def time_zone_by_country_and_region(country_code, region_code=None):
     26      """
     27      Get time zone from country code and region code.
     28
     29      @param country_code: Country code
     30      @type country_code: str
     31      @param region_code: Region code
     32      @type region_code: str
     33      @return: Time zone
     34      @rtype: str
     35      """
     36      timezone = country_dict.get(country_code)
     37      if not timezone:
     38          return None
     39
     40      if isinstance(timezone, str):
     41          return timezone
     42
     43      return timezone.get(region_code)
     44
     45
     46  country_dict = {
     47      'AD': 'Europe/Andorra',
     48      'AE': 'Asia/Dubai',
     49      'AF': 'Asia/Kabul',
     50      'AG': 'America/Antigua',
     51      'AI': 'America/Anguilla',
     52      'AL': 'Europe/Tirane',
     53      'AM': 'Asia/Yerevan',
     54      'AN': 'America/Curacao',
     55      'AO': 'Africa/Luanda',
     56      'AR': {
     57          '01': 'America/Argentina/Buenos_Aires',
     58          '02': 'America/Argentina/Catamarca',
     59          '03': 'America/Argentina/Tucuman',
     60          '04': 'America/Argentina/Rio_Gallegos',
     61          '05': 'America/Argentina/Cordoba',
     62          '06': 'America/Argentina/Tucuman',
     63          '07': 'America/Argentina/Buenos_Aires',
     64          '08': 'America/Argentina/Buenos_Aires',
     65          '09': 'America/Argentina/Tucuman',
     66          '10': 'America/Argentina/Jujuy',
     67          '11': 'America/Argentina/San_Luis',
     68          '12': 'America/Argentina/La_Rioja',
     69          '13': 'America/Argentina/Mendoza',
     70          '14': 'America/Argentina/Buenos_Aires',
     71          '15': 'America/Argentina/San_Luis',
     72          '16': 'America/Argentina/Buenos_Aires',
     73          '17': 'America/Argentina/Salta',
     74          '18': 'America/Argentina/San_Juan',
     75          '19': 'America/Argentina/San_Luis',
     76          '20': 'America/Argentina/Rio_Gallegos',
     77          '21': 'America/Argentina/Buenos_Aires',
     78          '22': 'America/Argentina/Catamarca',
     79          '23': 'America/Argentina/Ushuaia',
     80          '24': 'America/Argentina/Tucuman'
     81      },
     82      'AS': 'US/Samoa',
     83      'AT': 'Europe/Vienna',
     84      'AU': {
     85          '01': 'Australia/Canberra',
     86          '02': 'Australia/NSW',
     87          '03': 'Australia/North',
     88          '04': 'Australia/Queensland',
     89          '05': 'Australia/South',
     90          '06': 'Australia/Tasmania',
     91          '07': 'Australia/Victoria',
     92          '08': 'Australia/West'
     93      },
     94      'AW': 'America/Aruba',
     95      'AX': 'Europe/Mariehamn',
     96      'AZ': 'Asia/Baku',
     97      'BA': 'Europe/Sarajevo',
     98      'BB': 'America/Barbados',
     99      'BD': 'Asia/Dhaka',
    100      'BE': 'Europe/Brussels',
    101      'BF': 'Africa/Ouagadougou',
    102      'BG': 'Europe/Sofia',
    103      'BH': 'Asia/Bahrain',
    104      'BI': 'Africa/Bujumbura',
    105      'BJ': 'Africa/Porto-Novo',
    106      'BL': 'America/St_Barthelemy',
    107      'BM': 'Atlantic/Bermuda',
    108      'BN': 'Asia/Brunei',
    109      'BO': 'America/La_Paz',
    110      'BQ': 'America/Curacao',
    111      'BR': {
    112          '01': 'America/Rio_Branco',
    113          '02': 'America/Maceio',
    114          '03': 'America/Sao_Paulo',
    115          '04': 'America/Manaus',
    116          '05': 'America/Bahia',
    117          '06': 'America/Fortaleza',
    118          '07': 'America/Sao_Paulo',
    119          '08': 'America/Sao_Paulo',
    120          '11': 'America/Campo_Grande',
    121          '13': 'America/Belem',
    122          '14': 'America/Cuiaba',
    123          '15': 'America/Sao_Paulo',
    124          '16': 'America/Belem',
    125          '17': 'America/Recife',
    126          '18': 'America/Sao_Paulo',
    127          '20': 'America/Fortaleza',
    128          '21': 'America/Sao_Paulo',
    129          '22': 'America/Recife',
    130          '23': 'America/Sao_Paulo',
    131          '24': 'America/Porto_Velho',
    132          '25': 'America/Boa_Vista',
    133          '26': 'America/Sao_Paulo',
    134          '27': 'America/Sao_Paulo',
    135          '28': 'America/Maceio',
    136          '29': 'America/Sao_Paulo',
    137          '30': 'America/Recife',
    138          '31': 'America/Araguaina'
    139      },
    140      'BS': 'America/Nassau',
    141      'BT': 'Asia/Thimphu',
    142      'BW': 'Africa/Gaborone',
    143      'BY': 'Europe/Minsk',
    144      'BZ': 'America/Belize',
    145      'CA': {
    146          'AB': 'America/Edmonton',
    147          'BC': 'America/Vancouver',
    148          'MB': 'America/Winnipeg',
    149          'NB': 'America/Halifax',
    150          'NL': 'America/St_Johns',
    151          'NS': 'America/Halifax',
    152          'NT': 'America/Yellowknife',
    153          'NU': 'America/Rankin_Inlet',
    154          'ON': 'America/Toronto',
    155          'PE': 'America/Halifax',
    156          'QC': 'America/Montreal',
    157          'SK': 'America/Regina',
    158          'YT': 'America/Whitehorse'
    159      },
    160      'CC': 'Indian/Cocos',
    161      'CD': {
    162          '02': 'Africa/Kinshasa',
    163          '05': 'Africa/Lubumbashi',
    164          '06': 'Africa/Kinshasa',
    165          '08': 'Africa/Kinshasa',
    166          '10': 'Africa/Lubumbashi',
    167          '11': 'Africa/Lubumbashi',
    168          '12': 'Africa/Lubumbashi'
    169      },
    170      'CF': 'Africa/Bangui',
    171      'CG': 'Africa/Brazzaville',
    172      'CH': 'Europe/Zurich',
    173      'CI': 'Africa/Abidjan',
    174      'CK': 'Pacific/Rarotonga',
    175      'CL': 'Chile/Continental',
    176      'CM': 'Africa/Lagos',
    177      'CN': {
    178          '01': 'Asia/Shanghai',
    179          '02': 'Asia/Shanghai',
    180          '03': 'Asia/Shanghai',
    181          '04': 'Asia/Shanghai',
    182          '05': 'Asia/Harbin',
    183          '06': 'Asia/Chongqing',
    184          '07': 'Asia/Shanghai',
    185          '08': 'Asia/Harbin',
    186          '09': 'Asia/Shanghai',
    187          '10': 'Asia/Shanghai',
    188          '11': 'Asia/Chongqing',
    189          '12': 'Asia/Shanghai',
    190          '13': 'Asia/Urumqi',
    191          '14': 'Asia/Chongqing',
    192          '15': 'Asia/Chongqing',
    193          '16': 'Asia/Chongqing',
    194          '18': 'Asia/Chongqing',
    195          '19': 'Asia/Harbin',
    196          '20': 'Asia/Harbin',
    197          '21': 'Asia/Chongqing',
    198          '22': 'Asia/Harbin',
    199          '23': 'Asia/Shanghai',
    200          '24': 'Asia/Chongqing',
    201          '25': 'Asia/Shanghai',
    202          '26': 'Asia/Chongqing',
    203          '28': 'Asia/Shanghai',
    204          '29': 'Asia/Chongqing',
    205          '30': 'Asia/Chongqing',
    206          '31': 'Asia/Chongqing',
    207          '32': 'Asia/Chongqing',
    208          '33': 'Asia/Chongqing'
    209      },
    210      'CO': 'America/Bogota',
    211      'CR': 'America/Costa_Rica',
    212      'CU': 'America/Havana',
    213      'CV': 'Atlantic/Cape_Verde',
    214      'CW': 'America/Curacao',
    215      'CX': 'Indian/Christmas',
    216      'CY': 'Asia/Nicosia',
    217      'CZ': 'Europe/Prague',
    218      'DE': 'Europe/Berlin',
    219      'DJ': 'Africa/Djibouti',
    220      'DK': 'Europe/Copenhagen',
    221      'DM': 'America/Dominica',
    222      'DO': 'America/Santo_Domingo',
    223      'DZ': 'Africa/Algiers',
    224      'EC': {
    225          '01': 'Pacific/Galapagos',
    226          '02': 'America/Guayaquil',
    227          '03': 'America/Guayaquil',
    228          '04': 'America/Guayaquil',
    229          '05': 'America/Guayaquil',
    230          '06': 'America/Guayaquil',
    231          '07': 'America/Guayaquil',
    232          '08': 'America/Guayaquil',
    233          '09': 'America/Guayaquil',
    234          '10': 'America/Guayaquil',
    235          '11': 'America/Guayaquil',
    236          '12': 'America/Guayaquil',
    237          '13': 'America/Guayaquil',
    238          '14': 'America/Guayaquil',
    239          '15': 'America/Guayaquil',
    240          '17': 'America/Guayaquil',
    241          '18': 'America/Guayaquil',
    242          '19': 'America/Guayaquil',
    243          '20': 'America/Guayaquil',
    244          '22': 'America/Guayaquil'
    245      },
    246      'EE': 'Europe/Tallinn',
    247      'EG': 'Africa/Cairo',
    248      'EH': 'Africa/El_Aaiun',
    249      'ER': 'Africa/Asmera',
    250      'ES': {
    251          '07': 'Europe/Madrid',
    252          '27': 'Europe/Madrid',
    253          '29': 'Europe/Madrid',
    254          '31': 'Europe/Madrid',
    255          '32': 'Europe/Madrid',
    256          '34': 'Europe/Madrid',
    257          '39': 'Europe/Madrid',
    258          '51': 'Africa/Ceuta',
    259          '52': 'Europe/Madrid',
    260          '53': 'Atlantic/Canary',
    261          '54': 'Europe/Madrid',
    262          '55': 'Europe/Madrid',
    263          '56': 'Europe/Madrid',
    264          '57': 'Europe/Madrid',
    265          '58': 'Europe/Madrid',
    266          '59': 'Europe/Madrid',
    267          '60': 'Europe/Madrid'
    268      },
    269      'ET': 'Africa/Addis_Ababa',
    270      'FI': 'Europe/Helsinki',
    271      'FJ': 'Pacific/Fiji',
    272      'FK': 'Atlantic/Stanley',
    273      'FO': 'Atlantic/Faeroe',
    274      'FR': 'Europe/Paris',
    275      'FX': 'Europe/Paris',
    276      'GA': 'Africa/Libreville',
    277      'GB': 'Europe/London',
    278      'GD': 'America/Grenada',
    279      'GE': 'Asia/Tbilisi',
    280      'GF': 'America/Cayenne',
    281      'GG': 'Europe/Guernsey',
    282      'GH': 'Africa/Accra',
    283      'GI': 'Europe/Gibraltar',
    284      'GL': {
    285          '01': 'America/Thule',
    286          '02': 'America/Godthab',
    287          '03': 'America/Godthab'
    288      },
    289      'GM': 'Africa/Banjul',
    290      'GN': 'Africa/Conakry',
    291      'GP': 'America/Guadeloupe',
    292      'GQ': 'Africa/Malabo',
    293      'GR': 'Europe/Athens',
    294      'GS': 'Atlantic/South_Georgia',
    295      'GT': 'America/Guatemala',
    296      'GU': 'Pacific/Guam',
    297      'GW': 'Africa/Bissau',
    298      'GY': 'America/Guyana',
    299      'HK': 'Asia/Hong_Kong',
    300      'HN': 'America/Tegucigalpa',
    301      'HR': 'Europe/Zagreb',
    302      'HT': 'America/Port-au-Prince',
    303      'HU': 'Europe/Budapest',
    304      'ID': {
    305          '01': 'Asia/Pontianak',
    306          '02': 'Asia/Makassar',
    307          '03': 'Asia/Jakarta',
    308          '04': 'Asia/Jakarta',
    309          '05': 'Asia/Jakarta',
    310          '06': 'Asia/Jakarta',
    311          '07': 'Asia/Jakarta',
    312          '08': 'Asia/Jakarta',
    313          '09': 'Asia/Jayapura',
    314          '10': 'Asia/Jakarta',
    315          '11': 'Asia/Pontianak',
    316          '12': 'Asia/Makassar',
    317          '13': 'Asia/Makassar',
    318          '14': 'Asia/Makassar',
    319          '15': 'Asia/Jakarta',
    320          '16': 'Asia/Makassar',
    321          '17': 'Asia/Makassar',
    322          '18': 'Asia/Makassar',
    323          '19': 'Asia/Pontianak',
    324          '20': 'Asia/Makassar',
    325          '21': 'Asia/Makassar',
    326          '22': 'Asia/Makassar',
    327          '23': 'Asia/Makassar',
    328          '24': 'Asia/Jakarta',
    329          '25': 'Asia/Pontianak',
    330          '26': 'Asia/Pontianak',
    331          '30': 'Asia/Jakarta',
    332          '31': 'Asia/Makassar',
    333          '33': 'Asia/Jakarta'
    334      },
    335      'IE': 'Europe/Dublin',
    336      'IL': 'Asia/Jerusalem',
    337      'IM': 'Europe/Isle_of_Man',
    338      'IN': 'Asia/Calcutta',
    339      'IO': 'Indian/Chagos',
    340      'IQ': 'Asia/Baghdad',
    341      'IR': 'Asia/Tehran',
    342      'IS': 'Atlantic/Reykjavik',
    343      'IT': 'Europe/Rome',
    344      'JE': 'Europe/Jersey',
    345      'JM': 'America/Jamaica',
    346      'JO': 'Asia/Amman',
    347      'JP': 'Asia/Tokyo',
    348      'KE': 'Africa/Nairobi',
    349      'KG': 'Asia/Bishkek',
    350      'KH': 'Asia/Phnom_Penh',
    351      'KI': 'Pacific/Tarawa',
    352      'KM': 'Indian/Comoro',
    353      'KN': 'America/St_Kitts',
    354      'KP': 'Asia/Pyongyang',
    355      'KR': 'Asia/Seoul',
    356      'KW': 'Asia/Kuwait',
    357      'KY': 'America/Cayman',
    358      'KZ': {
    359          '01': 'Asia/Almaty',
    360          '02': 'Asia/Almaty',
    361          '03': 'Asia/Qyzylorda',
    362          '04': 'Asia/Aqtobe',
    363          '05': 'Asia/Qyzylorda',
    364          '06': 'Asia/Aqtau',
    365          '07': 'Asia/Oral',
    366          '08': 'Asia/Qyzylorda',
    367          '09': 'Asia/Aqtau',
    368          '10': 'Asia/Qyzylorda',
    369          '11': 'Asia/Almaty',
    370          '12': 'Asia/Qyzylorda',
    371          '13': 'Asia/Aqtobe',
    372          '14': 'Asia/Qyzylorda',
    373          '15': 'Asia/Almaty',
    374          '16': 'Asia/Aqtobe',
    375          '17': 'Asia/Almaty'
    376      },
    377      'LA': 'Asia/Vientiane',
    378      'LB': 'Asia/Beirut',
    379      'LC': 'America/St_Lucia',
    380      'LI': 'Europe/Vaduz',
    381      'LK': 'Asia/Colombo',
    382      'LR': 'Africa/Monrovia',
    383      'LS': 'Africa/Maseru',
    384      'LT': 'Europe/Vilnius',
    385      'LU': 'Europe/Luxembourg',
    386      'LV': 'Europe/Riga',
    387      'LY': 'Africa/Tripoli',
    388      'MA': 'Africa/Casablanca',
    389      'MC': 'Europe/Monaco',
    390      'MD': 'Europe/Chisinau',
    391      'ME': 'Europe/Podgorica',
    392      'MF': 'America/Marigot',
    393      'MG': 'Indian/Antananarivo',
    394      'MK': 'Europe/Skopje',
    395      'ML': 'Africa/Bamako',
    396      'MM': 'Asia/Rangoon',
    397      'MN': 'Asia/Choibalsan',
    398      'MO': 'Asia/Macao',
    399      'MP': 'Pacific/Saipan',
    400      'MQ': 'America/Martinique',
    401      'MR': 'Africa/Nouakchott',
    402      'MS': 'America/Montserrat',
    403      'MT': 'Europe/Malta',
    404      'MU': 'Indian/Mauritius',
    405      'MV': 'Indian/Maldives',
    406      'MW': 'Africa/Blantyre',
    407      'MX': {
    408          '01': 'America/Mexico_City',
    409          '02': 'America/Tijuana',
    410          '03': 'America/Hermosillo',
    411          '04': 'America/Merida',
    412          '05': 'America/Mexico_City',
    413          '06': 'America/Chihuahua',
    414          '07': 'America/Monterrey',
    415          '08': 'America/Mexico_City',
    416          '09': 'America/Mexico_City',
    417          '10': 'America/Mazatlan',
    418          '11': 'America/Mexico_City',
    419          '12': 'America/Mexico_City',
    420          '13': 'America/Mexico_City',
    421          '14': 'America/Mazatlan',
    422          '15': 'America/Chihuahua',
    423          '16': 'America/Mexico_City',
    424          '17': 'America/Mexico_City',
    425          '18': 'America/Mazatlan',
    426          '19': 'America/Monterrey',
    427          '20': 'America/Mexico_City',
    428          '21': 'America/Mexico_City',
    429          '22': 'America/Mexico_City',
    430          '23': 'America/Cancun',
    431          '24': 'America/Mexico_City',
    432          '25': 'America/Mazatlan',
    433          '26': 'America/Hermosillo',
    434          '27': 'America/Merida',
    435          '28': 'America/Monterrey',
    436          '29': 'America/Mexico_City',
    437          '30': 'America/Mexico_City',
    438          '31': 'America/Merida',
    439          '32': 'America/Monterrey'
    440      },
    441      'MY': {
    442          '01': 'Asia/Kuala_Lumpur',
    443          '02': 'Asia/Kuala_Lumpur',
    444          '03': 'Asia/Kuala_Lumpur',
    445          '04': 'Asia/Kuala_Lumpur',
    446          '05': 'Asia/Kuala_Lumpur',
    447          '06': 'Asia/Kuala_Lumpur',
    448          '07': 'Asia/Kuala_Lumpur',
    449          '08': 'Asia/Kuala_Lumpur',
    450          '09': 'Asia/Kuala_Lumpur',
    451          '11': 'Asia/Kuching',
    452          '12': 'Asia/Kuala_Lumpur',
    453          '13': 'Asia/Kuala_Lumpur',
    454          '14': 'Asia/Kuala_Lumpur',
    455          '15': 'Asia/Kuching',
    456          '16': 'Asia/Kuching'
    457      },
    458      'MZ': 'Africa/Maputo',
    459      'NA': 'Africa/Windhoek',
    460      'NC': 'Pacific/Noumea',
    461      'NE': 'Africa/Niamey',
    462      'NF': 'Pacific/Norfolk',
    463      'NG': 'Africa/Lagos',
    464      'NI': 'America/Managua',
    465      'NL': 'Europe/Amsterdam',
    466      'NO': 'Europe/Oslo',
    467      'NP': 'Asia/Katmandu',
    468      'NR': 'Pacific/Nauru',
    469      'NU': 'Pacific/Niue',
    470      'NZ': {
    471          '85': 'Pacific/Auckland',
    472          'E7': 'Pacific/Auckland',
    473          'E8': 'Pacific/Auckland',
    474          'E9': 'Pacific/Auckland',
    475          'F1': 'Pacific/Auckland',
    476          'F2': 'Pacific/Auckland',
    477          'F3': 'Pacific/Auckland',
    478          'F4': 'Pacific/Auckland',
    479          'F5': 'Pacific/Auckland',
    480          'F7': 'Pacific/Chatham',
    481          'F8': 'Pacific/Auckland',
    482          'F9': 'Pacific/Auckland',
    483          'G1': 'Pacific/Auckland',
    484          'G2': 'Pacific/Auckland',
    485          'G3': 'Pacific/Auckland'
    486      },
    487      'OM': 'Asia/Muscat',
    488      'PA': 'America/Panama',
    489      'PE': 'America/Lima',
    490      'PF': 'Pacific/Marquesas',
    491      'PG': 'Pacific/Port_Moresby',
    492      'PH': 'Asia/Manila',
    493      'PK': 'Asia/Karachi',
    494      'PL': 'Europe/Warsaw',
    495      'PM': 'America/Miquelon',
    496      'PN': 'Pacific/Pitcairn',
    497      'PR': 'America/Puerto_Rico',
    498      'PS': 'Asia/Gaza',
    499      'PT': {
    500          '02': 'Europe/Lisbon',
    501          '03': 'Europe/Lisbon',
    502          '04': 'Europe/Lisbon',
    503          '05': 'Europe/Lisbon',
    504          '06': 'Europe/Lisbon',
    505          '07': 'Europe/Lisbon',
    506          '08': 'Europe/Lisbon',
    507          '09': 'Europe/Lisbon',
    508          '10': 'Atlantic/Madeira',
    509          '11': 'Europe/Lisbon',
    510          '13': 'Europe/Lisbon',
    511          '14': 'Europe/Lisbon',
    512          '16': 'Europe/Lisbon',
    513          '17': 'Europe/Lisbon',
    514          '18': 'Europe/Lisbon',
    515          '19': 'Europe/Lisbon',
    516          '20': 'Europe/Lisbon',
    517          '21': 'Europe/Lisbon',
    518          '22': 'Europe/Lisbon'
    519      },
    520      'PW': 'Pacific/Palau',
    521      'PY': 'America/Asuncion',
    522      'QA': 'Asia/Qatar',
    523      'RE': 'Indian/Reunion',
    524      'RO': 'Europe/Bucharest',
    525      'RS': 'Europe/Belgrade',
    526      'RU': {
    527          '01': 'Europe/Volgograd',
    528          '02': 'Asia/Irkutsk',
    529          '03': 'Asia/Novokuznetsk',
    530          '04': 'Asia/Novosibirsk',
    531          '05': 'Asia/Vladivostok',
    532          '06': 'Europe/Moscow',
    533          '07': 'Europe/Volgograd',
    534          '08': 'Europe/Samara',
    535          '09': 'Europe/Moscow',
    536          '10': 'Europe/Moscow',
    537          '11': 'Asia/Irkutsk',
    538          '13': 'Asia/Yekaterinburg',
    539          '14': 'Asia/Irkutsk',
    540          '15': 'Asia/Anadyr',
    541          '16': 'Europe/Samara',
    542          '17': 'Europe/Volgograd',
    543          '18': 'Asia/Krasnoyarsk',
    544          '20': 'Asia/Irkutsk',
    545          '21': 'Europe/Moscow',
    546          '22': 'Europe/Volgograd',
    547          '23': 'Europe/Kaliningrad',
    548          '24': 'Europe/Volgograd',
    549          '25': 'Europe/Moscow',
    550          '26': 'Asia/Kamchatka',
    551          '27': 'Europe/Volgograd',
    552          '28': 'Europe/Moscow',
    553          '29': 'Asia/Novokuznetsk',
    554          '30': 'Asia/Vladivostok',
    555          '31': 'Asia/Krasnoyarsk',
    556          '32': 'Asia/Omsk',
    557          '33': 'Asia/Yekaterinburg',
    558          '34': 'Asia/Yekaterinburg',
    559          '35': 'Asia/Yekaterinburg',
    560          '36': 'Asia/Anadyr',
    561          '37': 'Europe/Moscow',
    562          '38': 'Europe/Volgograd',
    563          '39': 'Asia/Krasnoyarsk',
    564          '40': 'Asia/Yekaterinburg',
    565          '41': 'Europe/Moscow',
    566          '42': 'Europe/Moscow',
    567          '43': 'Europe/Moscow',
    568          '44': 'Asia/Magadan',
    569          '45': 'Europe/Samara',
    570          '46': 'Europe/Samara',
    571          '47': 'Europe/Moscow',
    572          '48': 'Europe/Moscow',
    573          '49': 'Europe/Moscow',
    574          '50': 'Asia/Yekaterinburg',
    575          '51': 'Europe/Moscow',
    576          '52': 'Europe/Moscow',
    577          '53': 'Asia/Novosibirsk',
    578          '54': 'Asia/Omsk',
    579          '55': 'Europe/Samara',
    580          '56': 'Europe/Moscow',
    581          '57': 'Europe/Samara',
    582          '58': 'Asia/Yekaterinburg',
    583          '59': 'Asia/Vladivostok',
    584          '60': 'Europe/Kaliningrad',
    585          '61': 'Europe/Volgograd',
    586          '62': 'Europe/Moscow',
    587          '63': 'Asia/Yakutsk',
    588          '64': 'Asia/Sakhalin',
    589          '65': 'Europe/Samara',
    590          '66': 'Europe/Moscow',
    591          '67': 'Europe/Samara',
    592          '68': 'Europe/Volgograd',
    593          '69': 'Europe/Moscow',
    594          '70': 'Europe/Volgograd',
    595          '71': 'Asia/Yekaterinburg',
    596          '72': 'Europe/Moscow',
    597          '73': 'Europe/Samara',
    598          '74': 'Asia/Krasnoyarsk',
    599          '75': 'Asia/Novosibirsk',
    600          '76': 'Europe/Moscow',
    601          '77': 'Europe/Moscow',
    602          '78': 'Asia/Yekaterinburg',
    603          '79': 'Asia/Irkutsk',
    604          '80': 'Asia/Yekaterinburg',
    605          '81': 'Europe/Samara',
    606          '82': 'Asia/Irkutsk',
    607          '83': 'Europe/Moscow',
    608          '84': 'Europe/Volgograd',
    609          '85': 'Europe/Moscow',
    610          '86': 'Europe/Moscow',
    611          '87': 'Asia/Novosibirsk',
    612          '88': 'Europe/Moscow',
    613          '89': 'Asia/Vladivostok'
    614      },
    615      'RW': 'Africa/Kigali',
    616      'SA': 'Asia/Riyadh',
    617      'SB': 'Pacific/Guadalcanal',
    618      'SC': 'Indian/Mahe',
    619      'SD': 'Africa/Khartoum',
    620      'SE': 'Europe/Stockholm',
    621      'SG': 'Asia/Singapore',
    622      'SH': 'Atlantic/St_Helena',
    623      'SI': 'Europe/Ljubljana',
    624      'SJ': 'Arctic/Longyearbyen',
    625      'SK': 'Europe/Bratislava',
    626      'SL': 'Africa/Freetown',
    627      'SM': 'Europe/San_Marino',
    628      'SN': 'Africa/Dakar',
    629      'SO': 'Africa/Mogadishu',
    630      'SR': 'America/Paramaribo',
    631      'SS': 'Africa/Juba',
    632      'ST': 'Africa/Sao_Tome',
    633      'SV': 'America/El_Salvador',
    634      'SX': 'America/Curacao',
    635      'SY': 'Asia/Damascus',
    636      'SZ': 'Africa/Mbabane',
    637      'TC': 'America/Grand_Turk',
    638      'TD': 'Africa/Ndjamena',
    639      'TF': 'Indian/Kerguelen',
    640      'TG': 'Africa/Lome',
    641      'TH': 'Asia/Bangkok',
    642      'TJ': 'Asia/Dushanbe',
    643      'TK': 'Pacific/Fakaofo',
    644      'TL': 'Asia/Dili',
    645      'TM': 'Asia/Ashgabat',
    646      'TN': 'Africa/Tunis',
    647      'TO': 'Pacific/Tongatapu',
    648      'TR': 'Asia/Istanbul',
    649      'TT': 'America/Port_of_Spain',
    650      'TV': 'Pacific/Funafuti',
    651      'TW': 'Asia/Taipei',
    652      'TZ': 'Africa/Dar_es_Salaam',
    653      'UA': {
    654          '01': 'Europe/Kiev',
    655          '02': 'Europe/Kiev',
    656          '03': 'Europe/Uzhgorod',
    657          '04': 'Europe/Zaporozhye',
    658          '05': 'Europe/Zaporozhye',
    659          '06': 'Europe/Uzhgorod',
    660          '07': 'Europe/Zaporozhye',
    661          '08': 'Europe/Simferopol',
    662          '09': 'Europe/Kiev',
    663          '10': 'Europe/Zaporozhye',
    664          '11': 'Europe/Simferopol',
    665          '13': 'Europe/Kiev',
    666          '14': 'Europe/Zaporozhye',
    667          '15': 'Europe/Uzhgorod',
    668          '16': 'Europe/Zaporozhye',
    669          '17': 'Europe/Simferopol',
    670          '18': 'Europe/Zaporozhye',
    671          '19': 'Europe/Kiev',
    672          '20': 'Europe/Simferopol',
    673          '21': 'Europe/Kiev',
    674          '22': 'Europe/Uzhgorod',
    675          '23': 'Europe/Kiev',
    676          '24': 'Europe/Uzhgorod',
    677          '25': 'Europe/Uzhgorod',
    678          '26': 'Europe/Zaporozhye',
    679          '27': 'Europe/Kiev'
    680      },
    681      'UG': 'Africa/Kampala',
    682      'US': {
    683          'AK': 'America/Anchorage',
    684          'AL': 'America/Chicago',
    685          'AR': 'America/Chicago',
    686          'AZ': 'America/Phoenix',
    687          'CA': 'America/Los_Angeles',
    688          'CO': 'America/Denver',
    689          'CT': 'America/New_York',
    690          'DC': 'America/New_York',
    691          'DE': 'America/New_York',
    692          'FL': 'America/New_York',
    693          'GA': 'America/New_York',
    694          'HI': 'Pacific/Honolulu',
    695          'IA': 'America/Chicago',
    696          'ID': 'America/Denver',
    697          'IL': 'America/Chicago',
    698          'IN': 'America/Indianapolis',
    699          'KS': 'America/Chicago',
    700          'KY': 'America/New_York',
    701          'LA': 'America/Chicago',
    702          'MA': 'America/New_York',
    703          'MD': 'America/New_York',
    704          'ME': 'America/New_York',
    705          'MI': 'America/New_York',
    706          'MN': 'America/Chicago',
    707          'MO': 'America/Chicago',
    708          'MS': 'America/Chicago',
    709          'MT': 'America/Denver',
    710          'NC': 'America/New_York',
    711          'ND': 'America/Chicago',
    712          'NE': 'America/Chicago',
    713          'NH': 'America/New_York',
    714          'NJ': 'America/New_York',
    715          'NM': 'America/Denver',
    716          'NV': 'America/Los_Angeles',
    717          'NY': 'America/New_York',
    718          'OH': 'America/New_York',
    719          'OK': 'America/Chicago',
    720          'OR': 'America/Los_Angeles',
    721          'PA': 'America/New_York',
    722          'RI': 'America/New_York',
    723          'SC': 'America/New_York',
    724          'SD': 'America/Chicago',
    725          'TN': 'America/Chicago',
    726          'TX': 'America/Chicago',
    727          'UT': 'America/Denver',
    728          'VA': 'America/New_York',
    729          'VT': 'America/New_York',
    730          'WA': 'America/Los_Angeles',
    731          'WI': 'America/Chicago',
    732          'WV': 'America/New_York',
    733          'WY': 'America/Denver'
    734      },
    735      'UY': 'America/Montevideo',
    736      'UZ': {
    737          '01': 'Asia/Tashkent',
    738          '02': 'Asia/Samarkand',
    739          '03': 'Asia/Tashkent',
    740          '06': 'Asia/Tashkent',
    741          '07': 'Asia/Samarkand',
    742          '08': 'Asia/Samarkand',
    743          '09': 'Asia/Samarkand',
    744          '10': 'Asia/Samarkand',
    745          '12': 'Asia/Samarkand',
    746          '13': 'Asia/Tashkent',
    747          '14': 'Asia/Tashkent'
    748      },
    749      'VA': 'Europe/Vatican',
    750      'VC': 'America/St_Vincent',
    751      'VE': 'America/Caracas',
    752      'VG': 'America/Tortola',
    753      'VI': 'America/St_Thomas',
    754      'VN': 'Asia/Phnom_Penh',
    755      'VU': 'Pacific/Efate',
    756      'WF': 'Pacific/Wallis',
    757      'WS': 'Pacific/Samoa',
    758      'YE': 'Asia/Aden',
    759      'YT': 'Indian/Mayotte',
    760      'YU': 'Europe/Belgrade',
    761      'ZA': 'Africa/Johannesburg',
    762      'ZM': 'Africa/Lusaka',
    763      'ZW': 'Africa/Harare'
    764  }
    765