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

Source Code for Module pygeoip.timezone

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