Ik zou graag willen weten wat alle mogelijke waarden zijn voor het tijdzone-argument in de Python-bibliotheek pytz. Hoe het te doen?
Antwoord 1, autoriteit 100%
Je kunt alle beschikbare tijdzones weergeven met pytz.all_timezones
:
In [40]: import pytz
In [41]: pytz.all_timezones
Out[42]:
['Africa/Abidjan',
'Africa/Accra',
'Africa/Addis_Ababa',
...]
Er is ook pytz.common_timezones
:
In [45]: len(pytz.common_timezones)
Out[45]: 403
In [46]: len(pytz.all_timezones)
Out[46]: 563
Antwoord 2, autoriteit 14%
Maak geen eigen lijst– pytz
heeft een ingebouwde set:
import pytz
set(pytz.all_timezones_set)
>>> {'Europe/Vienna', 'America/New_York', 'America/Argentina/Salta',..}
U kunt dan een tijdzone toepassen:
import datetime
tz = pytz.timezone('Pacific/Johnston')
ct = datetime.datetime.now(tz=tz)
>>> ct.isoformat()
2017-01-13T11:29:22.601991-05:00
Of als je al een datetime
-objecthebt dat TZ-bewustis (niet naïef):
# 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
Antwoord 3, autoriteit 8%
De tijdzone-naam is de enige betrouwbare manier om de tijdzone op te geven.
U kunt hier een lijst met tijdzone-namen vinden: http://en.wikipedia.org/wiki/ LIST_OF_TZ_DATABASE_TIME_ZONES
Merk op dat deze lijst veel aliasnamen bevat, zoals wij / oosters voor de tijdzone die goed is genoemd amerika / new_york.
Als u deze lijst programmatisch wilt maken van de ZoneInfo-database, kunt u het compileren vanuit het ZONE.TAB-bestand in de database ZONEINFO. Ik denk niet dat pytz heeft een API om ze te krijgen, en ook ik denk niet dat het zou zeer nuttig zijn.
4, Autoriteit 5%
Hier, Python-lijst van landcodes, namen, continenten, hoofdsteden en PYTZ-tijdzonen.
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'},
]
Voor de volledige lijst:
Gist Github
Hoop, het helpt.
Antwoord 5
Ze lijken te worden bevolkt door de tz-databasetijdzonesdie hier.
Antwoord 6
Beschikbaar vanaf Python3.9:
zoneinfo, nieuwe module in Python3.9 die werkt tegen de database van IANA.
Om eerst alle beschikbare tijdzonen te pakken, eerst:
pip install tzdata
en dan:
import zoneinfo
print(zoneinfo.available_timezones())
7
Naar mijn mening is dit een ontwerpfout van Pytz-bibliotheek. Het moet betrouwbaarder zijn om een tijdzone op te geven met behulp van de offset, b.v.
pytz.construct("UTC-07:00")
wat u Canada / Pacific TimeZone geeft.