9

Существует ли список временных зон Pytz?

11

Как получить все возможные значения для аргумента timezone в библиотеке Python pytz?

Я хотел бы узнать, какие все возможные значения может принимать аргумент timezone в библиотеке Python pytz. Как это можно сделать?

5 ответ(ов)

6

Вы можете получить список всех доступных часовых поясов с помощью pytz.all_timezones:

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

Также существует pytz.common_timezones, который содержит только наиболее распространенные часовые пояса:

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

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

Таким образом, pytz.all_timezones возвращает полный список часовых поясов, в то время как pytz.common_timezones включает только общепринятые.

0

Не создавайте свой собственный список временных зон — в pytz уже существует встроенное множество:

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

Затем вы можете применить временную зону:

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

Или, если у вас уже есть объект datetime, который осведомлён о временной зоне (не наивный):

# Этот временной штамп в UTC
my_ct = datetime.datetime.now(tz=pytz.UTC)

# Теперь преобразуем его в другую временную зону
new_ct = my_ct.astimezone(tz)
>>> new_ct.isoformat()
2017-01-13T11:29:22.601991-05:00

Таким образом, не тратьте время на создание своего списка временных зон, используйте то, что уже есть!

0

Название временной зоны — единственный надежный способ указания временной зоны.

Вы можете найти список названий временных зон по следующей ссылке: Список временных зон tz. Обратите внимание, что этот список содержит много псевдонимов, таких как US/Eastern для временной зоны, которую правильно называют America/New_York.

Если вы хотите программно создать этот список из базы данных zoneinfo, вы можете скомпилировать его из файла zone.tab в базе данных zoneinfo. Я не думаю, что pytz предлагает API для получения таких данных, и также не уверен, что это было бы очень полезно.

0

Доступно начиная с Python 3.9:

Модуль zoneinfo, который появился в Python 3.9, работает с базой данных IANA.

Чтобы получить все доступные часовые пояса, сначала выполните команду:

pip install tzdata

А затем:

import zoneinfo

print(zoneinfo.available_timezones())

Этот код выведет список всех доступных часовых поясов.

0

Чтобы вывести список доступных часовых поясов с помощью библиотеки pytz, вы можете использовать следующий фрагмент кода в цикле:

for tz in pytz.all_timezones:
    print(tz)

Этот код выведет каждый часовой пояс на отдельной строке, например:

Africa/Douala
Africa/El_Aaiun
Africa/Freetown
Africa/Gaborone
Africa/Harare

Как уже упоминалось в предыдущих ответах, вы также можете просто напечатать весь список всех часовых поясов, используя следующую команду:

print(pytz.all_timezones)

В этом случае вы получите вывод в виде массива, который включает все часовые пояса:

['Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', 'Africa/Algiers', ..., 'Zulu']

Это полезно, если вам нужно использовать все часовые пояса сразу, но вывод будет одним большим массивом, без разделения на строки.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь