2012-12-13 21 views
300

Vorrei sapere quali sono tutti i valori possibili per l'argomento del fuso orario nella libreria Pytz Python.Python - Pytz - Elenco dei fusi orari?

SOLUZIONE

for tz in pytz.all_timezones: 
    print tz 


Africa/Abidjan 
Africa/Accra 
Africa/Addis_Ababa 
Africa/Algiers 
Africa/Asmara 
Africa/Asmera 
Africa/Bamako 
Africa/Bangui 
Africa/Banjul 
Africa/Bissau 
Africa/Blantyre 
Africa/Brazzaville 
Africa/Bujumbura 
Africa/Cairo 
Africa/Casablanca 
Africa/Ceuta 
Africa/Conakry 
Africa/Dakar 
Africa/Dar_es_Salaam 
Africa/Djibouti 
Africa/Douala 
Africa/El_Aaiun 
Africa/Freetown 
Africa/Gaborone 
Africa/Harare 
Africa/Johannesburg 
Africa/Juba 
Africa/Kampala 
Africa/Khartoum 
Africa/Kigali 
Africa/Kinshasa 
Africa/Lagos 
Africa/Libreville 
Africa/Lome 
Africa/Luanda 
Africa/Lubumbashi 
Africa/Lusaka 
Africa/Malabo 
Africa/Maputo 
Africa/Maseru 
Africa/Mbabane 
Africa/Mogadishu 
Africa/Monrovia 
Africa/Nairobi 
Africa/Ndjamena 
Africa/Niamey 
Africa/Nouakchott 
Africa/Ouagadougou 
Africa/Porto-Novo 
Africa/Sao_Tome 
Africa/Timbuktu 
Africa/Tripoli 
Africa/Tunis 
Africa/Windhoek 
America/Adak 
America/Anchorage 
America/Anguilla 
America/Antigua 
America/Araguaina 
America/Argentina/Buenos_Aires 
America/Argentina/Catamarca 
America/Argentina/ComodRivadavia 
America/Argentina/Cordoba 
America/Argentina/Jujuy 
America/Argentina/La_Rioja 
America/Argentina/Mendoza 
America/Argentina/Rio_Gallegos 
America/Argentina/Salta 
America/Argentina/San_Juan 
America/Argentina/San_Luis 
America/Argentina/Tucuman 
America/Argentina/Ushuaia 
America/Aruba 
America/Asuncion 
America/Atikokan 
America/Atka 
America/Bahia 
America/Bahia_Banderas 
America/Barbados 
America/Belem 
America/Belize 
America/Blanc-Sablon 
America/Boa_Vista 
America/Bogota 
America/Boise 
America/Buenos_Aires 
America/Cambridge_Bay 
America/Campo_Grande 
America/Cancun 
America/Caracas 
America/Catamarca 
America/Cayenne 
America/Cayman 
America/Chicago 
America/Chihuahua 
America/Coral_Harbour 
America/Cordoba 
America/Costa_Rica 
America/Creston 
America/Cuiaba 
America/Curacao 
America/Danmarkshavn 
America/Dawson 
America/Dawson_Creek 
America/Denver 
America/Detroit 
America/Dominica 
America/Edmonton 
America/Eirunepe 
America/El_Salvador 
America/Ensenada 
America/Fort_Wayne 
America/Fortaleza 
America/Glace_Bay 
America/Godthab 
America/Goose_Bay 
America/Grand_Turk 
America/Grenada 
America/Guadeloupe 
America/Guatemala 
America/Guayaquil 
America/Guyana 
America/Halifax 
America/Havana 
America/Hermosillo 
America/Indiana/Indianapolis 
America/Indiana/Knox 
America/Indiana/Marengo 
America/Indiana/Petersburg 
America/Indiana/Tell_City 
America/Indiana/Vevay 
America/Indiana/Vincennes 
America/Indiana/Winamac 
America/Indianapolis 
America/Inuvik 
America/Iqaluit 
America/Jamaica 
America/Jujuy 
America/Juneau 
America/Kentucky/Louisville 
America/Kentucky/Monticello 
America/Knox_IN 
America/Kralendijk 
America/La_Paz 
America/Lima 
America/Los_Angeles 
America/Louisville 
America/Lower_Princes 
America/Maceio 
America/Managua 
America/Manaus 
America/Marigot 
America/Martinique 
America/Matamoros 
America/Mazatlan 
America/Mendoza 
America/Menominee 
America/Merida 
America/Metlakatla 
America/Mexico_City 
America/Miquelon 
America/Moncton 
America/Monterrey 
America/Montevideo 
America/Montreal 
America/Montserrat 
America/Nassau 
America/New_York 
America/Nipigon 
America/Nome 
America/Noronha 
America/North_Dakota/Beulah 
America/North_Dakota/Center 
America/North_Dakota/New_Salem 
America/Ojinaga 
America/Panama 
America/Pangnirtung 
America/Paramaribo 
America/Phoenix 
America/Port-au-Prince 
America/Port_of_Spain 
America/Porto_Acre 
America/Porto_Velho 
America/Puerto_Rico 
America/Rainy_River 
America/Rankin_Inlet 
America/Recife 
America/Regina 
America/Resolute 
America/Rio_Branco 
America/Rosario 
America/Santa_Isabel 
America/Santarem 
America/Santiago 
America/Santo_Domingo 
America/Sao_Paulo 
America/Scoresbysund 
America/Shiprock 
America/Sitka 
America/St_Barthelemy 
America/St_Johns 
America/St_Kitts 
America/St_Lucia 
America/St_Thomas 
America/St_Vincent 
America/Swift_Current 
America/Tegucigalpa 
America/Thule 
America/Thunder_Bay 
America/Tijuana 
America/Toronto 
America/Tortola 
America/Vancouver 
America/Virgin 
America/Whitehorse 
America/Winnipeg 
America/Yakutat 
America/Yellowknife 
Antarctica/Casey 
Antarctica/Davis 
Antarctica/DumontDUrville 
Antarctica/Macquarie 
Antarctica/Mawson 
Antarctica/McMurdo 
Antarctica/Palmer 
Antarctica/Rothera 
Antarctica/South_Pole 
Antarctica/Syowa 
Antarctica/Vostok 
Arctic/Longyearbyen 
Asia/Aden 
Asia/Almaty 
Asia/Amman 
Asia/Anadyr 
Asia/Aqtau 
Asia/Aqtobe 
Asia/Ashgabat 
Asia/Ashkhabad 
Asia/Baghdad 
Asia/Bahrain 
Asia/Baku 
Asia/Bangkok 
Asia/Beirut 
Asia/Bishkek 
Asia/Brunei 
Asia/Calcutta 
Asia/Choibalsan 
Asia/Chongqing 
Asia/Chungking 
Asia/Colombo 
Asia/Dacca 
Asia/Damascus 
Asia/Dhaka 
Asia/Dili 
Asia/Dubai 
Asia/Dushanbe 
Asia/Gaza 
Asia/Harbin 
Asia/Hebron 
Asia/Ho_Chi_Minh 
Asia/Hong_Kong 
Asia/Hovd 
Asia/Irkutsk 
Asia/Istanbul 
Asia/Jakarta 
Asia/Jayapura 
Asia/Jerusalem 
Asia/Kabul 
Asia/Kamchatka 
Asia/Karachi 
Asia/Kashgar 
Asia/Kathmandu 
Asia/Katmandu 
Asia/Kolkata 
Asia/Krasnoyarsk 
Asia/Kuala_Lumpur 
Asia/Kuching 
Asia/Kuwait 
Asia/Macao 
Asia/Macau 
Asia/Magadan 
Asia/Makassar 
Asia/Manila 
Asia/Muscat 
Asia/Nicosia 
Asia/Novokuznetsk 
Asia/Novosibirsk 
Asia/Omsk 
Asia/Oral 
Asia/Phnom_Penh 
Asia/Pontianak 
Asia/Pyongyang 
Asia/Qatar 
Asia/Qyzylorda 
Asia/Rangoon 
Asia/Riyadh 
Asia/Saigon 
Asia/Sakhalin 
Asia/Samarkand 
Asia/Seoul 
Asia/Shanghai 
Asia/Singapore 
Asia/Taipei 
Asia/Tashkent 
Asia/Tbilisi 
Asia/Tehran 
Asia/Tel_Aviv 
Asia/Thimbu 
Asia/Thimphu 
Asia/Tokyo 
Asia/Ujung_Pandang 
Asia/Ulaanbaatar 
Asia/Ulan_Bator 
Asia/Urumqi 
Asia/Vientiane 
Asia/Vladivostok 
Asia/Yakutsk 
Asia/Yekaterinburg 
Asia/Yerevan 
Atlantic/Azores 
Atlantic/Bermuda 
Atlantic/Canary 
Atlantic/Cape_Verde 
Atlantic/Faeroe 
Atlantic/Faroe 
Atlantic/Jan_Mayen 
Atlantic/Madeira 
Atlantic/Reykjavik 
Atlantic/South_Georgia 
Atlantic/St_Helena 
Atlantic/Stanley 
Australia/ACT 
Australia/Adelaide 
Australia/Brisbane 
Australia/Broken_Hill 
Australia/Canberra 
Australia/Currie 
Australia/Darwin 
Australia/Eucla 
Australia/Hobart 
Australia/LHI 
Australia/Lindeman 
Australia/Lord_Howe 
Australia/Melbourne 
Australia/NSW 
Australia/North 
Australia/Perth 
Australia/Queensland 
Australia/South 
Australia/Sydney 
Australia/Tasmania 
Australia/Victoria 
Australia/West 
Australia/Yancowinna 
Brazil/Acre 
Brazil/DeNoronha 
Brazil/East 
Brazil/West 
CET 
CST6CDT 
Canada/Atlantic 
Canada/Central 
Canada/East-Saskatchewan 
Canada/Eastern 
Canada/Mountain 
Canada/Newfoundland 
Canada/Pacific 
Canada/Saskatchewan 
Canada/Yukon 
Chile/Continental 
Chile/EasterIsland 
Cuba 
EET 
EST 
EST5EDT 
Egypt 
Eire 
Etc/GMT 
Etc/GMT+0 
Etc/GMT+1 
Etc/GMT+10 
Etc/GMT+11 
Etc/GMT+12 
Etc/GMT+2 
Etc/GMT+3 
Etc/GMT+4 
Etc/GMT+5 
Etc/GMT+6 
Etc/GMT+7 
Etc/GMT+8 
Etc/GMT+9 
Etc/GMT-0 
Etc/GMT-1 
Etc/GMT-10 
Etc/GMT-11 
Etc/GMT-12 
Etc/GMT-13 
Etc/GMT-14 
Etc/GMT-2 
Etc/GMT-3 
Etc/GMT-4 
Etc/GMT-5 
Etc/GMT-6 
Etc/GMT-7 
Etc/GMT-8 
Etc/GMT-9 
Etc/GMT0 
Etc/Greenwich 
Etc/UCT 
Etc/UTC 
Etc/Universal 
Etc/Zulu 
Europe/Amsterdam 
Europe/Andorra 
Europe/Athens 
Europe/Belfast 
Europe/Belgrade 
Europe/Berlin 
Europe/Bratislava 
Europe/Brussels 
Europe/Bucharest 
Europe/Budapest 
Europe/Chisinau 
Europe/Copenhagen 
Europe/Dublin 
Europe/Gibraltar 
Europe/Guernsey 
Europe/Helsinki 
Europe/Isle_of_Man 
Europe/Istanbul 
Europe/Jersey 
Europe/Kaliningrad 
Europe/Kiev 
Europe/Lisbon 
Europe/Ljubljana 
Europe/London 
Europe/Luxembourg 
Europe/Madrid 
Europe/Malta 
Europe/Mariehamn 
Europe/Minsk 
Europe/Monaco 
Europe/Moscow 
Europe/Nicosia 
Europe/Oslo 
Europe/Paris 
Europe/Podgorica 
Europe/Prague 
Europe/Riga 
Europe/Rome 
Europe/Samara 
Europe/San_Marino 
Europe/Sarajevo 
Europe/Simferopol 
Europe/Skopje 
Europe/Sofia 
Europe/Stockholm 
Europe/Tallinn 
Europe/Tirane 
Europe/Tiraspol 
Europe/Uzhgorod 
Europe/Vaduz 
Europe/Vatican 
Europe/Vienna 
Europe/Vilnius 
Europe/Volgograd 
Europe/Warsaw 
Europe/Zagreb 
Europe/Zaporozhye 
Europe/Zurich 
GB 
GB-Eire 
GMT 
GMT+0 
GMT-0 
GMT0 
Greenwich 
HST 
Hongkong 
Iceland 
Indian/Antananarivo 
Indian/Chagos 
Indian/Christmas 
Indian/Cocos 
Indian/Comoro 
Indian/Kerguelen 
Indian/Mahe 
Indian/Maldives 
Indian/Mauritius 
Indian/Mayotte 
Indian/Reunion 
Iran 
Israel 
Jamaica 
Japan 
Kwajalein 
Libya 
MET 
MST 
MST7MDT 
Mexico/BajaNorte 
Mexico/BajaSur 
Mexico/General 
NZ 
NZ-CHAT 
Navajo 
PRC 
PST8PDT 
Pacific/Apia 
Pacific/Auckland 
Pacific/Chatham 
Pacific/Chuuk 
Pacific/Easter 
Pacific/Efate 
Pacific/Enderbury 
Pacific/Fakaofo 
Pacific/Fiji 
Pacific/Funafuti 
Pacific/Galapagos 
Pacific/Gambier 
Pacific/Guadalcanal 
Pacific/Guam 
Pacific/Honolulu 
Pacific/Johnston 
Pacific/Kiritimati 
Pacific/Kosrae 
Pacific/Kwajalein 
Pacific/Majuro 
Pacific/Marquesas 
Pacific/Midway 
Pacific/Nauru 
Pacific/Niue 
Pacific/Norfolk 
Pacific/Noumea 
Pacific/Pago_Pago 
Pacific/Palau 
Pacific/Pitcairn 
Pacific/Pohnpei 
Pacific/Ponape 
Pacific/Port_Moresby 
Pacific/Rarotonga 
Pacific/Saipan 
Pacific/Samoa 
Pacific/Tahiti 
Pacific/Tarawa 
Pacific/Tongatapu 
Pacific/Truk 
Pacific/Wake 
Pacific/Wallis 
Pacific/Yap 
Poland 
Portugal 
ROC 
ROK 
Singapore 
Turkey 
UCT 
US/Alaska 
US/Aleutian 
US/Arizona 
US/Central 
US/East-Indiana 
US/Eastern 
US/Hawaii 
US/Indiana-Starke 
US/Michigan 
US/Mountain 
US/Pacific 
US/Pacific-New 
US/Samoa 
UTC 
Universal 
W-SU 
WET 
Zulu 
+4

È divertente come "GMT", "GMT + 0", "GMT-0", "GMT0", "Greenwich", "UCT", "UTC", "Universal" e "Zulu" significano praticamente la stessa cosa eppure ci sono così tante voci per questo. –

+15

GMT non è la stessa di UTC. È un errore comune. – PawelRoman

+1

@PawelRoman: GMT può significare cose diverse in un contesto diverso. A volte * significa * UTC ad esempio, stringhe temporali del certificato ssl come accettato ['ssl.cert_time_to_second()'] (https://docs.python.org/dev/library/ssl.html#ssl.cert_time_to_seconds) * richiede * GMT ('ASN1_TIME_print()' legacy). – jfs

risposta

153

è possibile elencare tutti i fusi orari disponibili con pytz.all_timezones:

In [40]: import pytz 
In [41]: pytz.all_timezones 
Out[42]: 
['Africa/Abidjan', 
'Africa/Accra', 
'Africa/Addis_Ababa', 
...] 

C'è anche pytz.common_timezones:

In [45]: len(pytz.common_timezones) 
Out[45]: 403 

In [46]: len(pytz.all_timezones) 
Out[46]: 563 
+5

In aggiunta a 'all_timezones', [pytz fornisce anche] (http://pytz.sourceforge.net/#helpers) 'common_timezones'. –

+0

perché manca la Cina? – Adders

+0

La Cina utilizza un [fuso orario singolo] (https://en.wikipedia.org/wiki/Time_in_China#IANA_time_zone_database), il cui nome del fuso orario è "Asia/Shanghai". – unutbu

15

Il nome fuso orario è l'unico modo affidabile per specificare il fuso orario.

Qui è possibile trovare un elenco di nomi di fuso orario: http://en.wikipedia.org/wiki/List_of_tz_database_time_zones Si noti che questo elenco contiene molti nomi di alias, come USA/Est per il fuso orario che viene correttamente chiamato America/New_York.

Se si desidera creare questo elenco dal database zoneinfo, è possibile compilarlo dal file zone.tab nel database zoneinfo. Non penso che pytz abbia un'API per ottenerli, e inoltre non penso che sarebbe molto utile.

4

sembrano essere popolato dalle zone TZ orari di database trovate here.

enter image description here

+1

'pytz' fornisce l'accesso a [il database tz] (https://www.iana.org/time-zones/repository/tz-link.html) (è la fonte dei dati di wikipedia). – jfs

4

Qui, la lista Python dei codici di paese, i nomi, i continenti, capitelli, e fusi orari pytz.

countries = [ 
{'timezones': ['Europe/Paris'], 'code': 'FR', 'continent': 'Europe', 'name': 'France', 'capital': 'Paris'} 
{'timezones': ['Africa/Kampala'], 'code': 'UG', 'continent': 'Africa', 'name': 'Uganda', 'capital': 'Kampala'}, 
{'timezones': ['Asia/Colombo'], 'code': 'LK', 'continent': 'Asia', 'name': 'Sri Lanka', 'capital': 'Sri Jayewardenepura Kotte'}, 
{'timezones': ['Asia/Riyadh'], 'code': 'SA', 'continent': 'Asia', 'name': 'Saudi Arabia', 'capital': 'Riyadh'}, 
{'timezones': ['Africa/Luanda'], 'code': 'AO', 'continent': 'Africa', 'name': 'Angola', 'capital': 'Luanda'},  
{'timezones': ['Europe/Vienna'], 'code': 'AT', 'continent': 'Europe', 'name': 'Austria', 'capital': 'Vienna'}, 
{'timezones': ['Asia/Calcutta'], 'code': 'IN', 'continent': 'Asia', 'name': 'India', 'capital': 'New Delhi'}, 
{'timezones': ['Asia/Dubai'], 'code': 'AE', 'continent': 'Asia', 'name': 'United Arab Emirates', 'capital': 'Abu Dhabi'}, 
{'timezones': ['Europe/London'], 'code': 'GB', 'continent': 'Europe', 'name': 'United Kingdom', 'capital': 'London'}, 
] 

Per l'elenco completo: Gist Github

Speranza, aiuta.

-3

A mio parere questo è un difetto di progettazione della libreria pytz. Dovrebbe essere più affidabile specificare un fuso orario utilizzando l'offset, ad es.

pytz.construct("UTC-07:00") 

che ti dà il fuso orario Canada/Pacifico.

+4

Gli offset cambiano durante l'anno (di solito a causa dell'ora legale), quindi non è la stessa cosa che normalmente consideriamo un fuso orario. –

16

Non creare la tua selezione-pytz ha un built-in set:

import pytz 
set(pytz.all_timezones_set) 
>>> {'Europe/Vienna', 'America/New_York', 'America/Argentina/Salta',..} 

È possibile quindi applicare un fuso orario:

import datetime 
tz = pytz.timezone('Pacific/Johnston') 
ct = datetime.datetime.now(tz=tz) 
>>> ct.isoformat() 
2017-01-13T11:29:22.601991-05:00 

O se già avere un oggetto datetime ovvero TZ consapevole (non ingenuo):

# This timestamp is in UTC 
my_ct = datetime.datetime.now(tz=pytz.UTC) 

# Now convert it to another timezone 
new_ct = my_ct.astimezone(tz) 
>>> new_ct.isoformat() 
2017-01-13T11:29:22.601991-05:00 
-1

Se sei su una piattaforma simile a Unix, ti suggerisco di evitare pytz e guardare solo in/usr/share/zoneinfo. dateutil.tz può utilizzare le informazioni lì.

Il seguente codice mostra il problema che pytz può dare. Sono rimasto scioccato quando l'ho scoperto per la prima volta. (È interessante notare che, il pytz installato da yum su CentOS 7 non presenta questo problema.)

import pytz 
import dateutil.tz 
from datetime import datetime 
print((datetime(2017,2,13,14,29,29, tzinfo=pytz.timezone('Asia/Shanghai')) 
    - datetime(2017,2,13,14,29,29, tzinfo=pytz.timezone('UTC'))) 
    .total_seconds()) 
print((datetime(2017,2,13,14,29,29, tzinfo=dateutil.tz.gettz('Asia/Shanghai')) 
    - datetime(2017,2,13,14,29,29, tzinfo=dateutil.tz.tzutc())) 
    .total_seconds()) 

-29160.0 
-28800.0 

Vale a dire il fuso orario creato da pytz è per la vera ora locale, al posto del tempo locale standard osservato dalla gente. Shanghai è conforme a 0800, non 0806 come suggerito da pytz:

pytz.timezone('Asia/Shanghai') 
<DstTzInfo 'Asia/Shanghai' LMT+8:06:00 STD> 

EDIT: Grazie a commento e downvote di Mark Ransom, ora so che sto usando pytz nel modo sbagliato. In breve, non è necessario passare il risultato di pytz.timezone(…) a datetime, ma è necessario passare lo datetime al metodo localize.

Nonostante il suo argomento (e il mio male per non aver letto più attentamente la documentazione di pytz), non sto cancellando la risposta, né sto modificando i miei suggerimenti. Stavo rispondendo alla domanda in un modo (come enumerare i fusi orari supportati, sebbene non con pytz), perché credevo che pytz non fornisse una soluzione corretta. Sebbene la mia convinzione fosse errata, questa risposta sta ancora fornendo alcune informazioni, IMHO, che sono potenzialmente utili per le persone interessate a questa domanda. Pytz's corretto modo di fare le cose è controintuitivo. Diamine, se lo tzinfo creato da pytz non dovrebbe essere utilizzato direttamente da datetime, dovrebbe essere di un tipo diverso. L'interfaccia di pytz è semplicemente mal progettata. Il collegamento fornito da Mark mostra che molte persone, non solo me, sono fuorviate dall'interfaccia di pytz.

+0

Vedere https://stackoverflow.com/questions/11473721/weird-timezone-issue-with-pytz/11474330 per una correzione. Non c'è niente di sbagliato in 'pytz', lo stai solo usando male. Post scriptum Questa non è una risposta alla domanda * affatto *. –

+0

@MarkRansom Buone informazioni, ed è bello sapere. Tuttavia, non compro il tuo argomento. L'interfaccia è progettata in modo errato, periodo. È molto controintuitivo. –

+0

Sì, l'interfaccia è progettata in modo errato. Ma è l'interfaccia 'datetime' che è sbagliata, non 'pytz'. 'datetime' non prevedeva * oggetti di fuso orario intelligenti *, quindi la sua interfaccia non li inizializza correttamente. –