Is er een lijst met Pytz-tijdzones?

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 lijstpytzheeft 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.

Other episodes