Рубрики
Без рубрики

Python Pytz.

Python Pytz, Python TimeZone, экземпляр Python DateTime с TimeZone, Pytz Module, Python Convert Convert TimeZones, Python Dateime Now () Tzinfo, Python UTC в PST

Автор оригинала: Pankaj Kumar.

Модуль Python Pytz позволяет нам создавать экземпляры TimeZone Aware DateTime.

Python Pytz.

Python DateTime Теперь функция () создает наивный экземпляр DateTime из текущего времени локальной системы. Тем не менее, эта функция также принимает часовой разум в качестве аргумента, который должен быть реализация абстрактного типа Tzinfo Отказ

Модуль Python Pytz предоставляет реализации Tzinfo Класс, который можно использовать для создания экземпляров TimeZone Aware DateTime.

Модуль Python Pytz может быть установлен с помощью команды PIP.

pip install pytz

Атрибуты Python Pytz.

Есть некоторые атрибуты в модуле Pytz, чтобы помочь нам найти поддерживаемые строки часов пояса. Давайте посмотрим на них.

all_timezones.

Возвращает список всех поддерживаемых часовых поясов модулем Pytz.

import pytz

print('all_timezones =', pytz.all_timezones, '\n')

Выход:

all_timezones = ['Africa/Abidjan', 'Africa/Accra', ... , 'UTC', 'Universal', 'W-SU', 'WET', 'Zulu'] 

Список очень длинный, вывод просто показывает некоторые значения.

all_timezones_set.

Возвращает набор всех поддерживаемых часовых поясов.

print('all_timezones_set =', pytz.all_timezones_set, '\n')

Выход:

all_timezones_set = LazySet({'America/St_Vincent', 'Asia/Thimphu', 'Etc/GMT+9', ... , 'Europe/Guernsey'}) 

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

common_timezones, common_timezones_set.

Возвращает список и набор часто используемых часовых поясов.

print('common_timezones =', pytz.common_timezones, '\n')
print('common_timezones_set =', pytz.common_timezones_set, '\n')

Выход:

common_timezones = ['Africa/Abidjan', 'Africa/Accra', ... , 'US/Pacific', 'UTC'] 
common_timezones_set = LazySet({'America/St_Vincent', 'Asia/Thimphu', ... , 'Europe/Guernsey'}) 

Country_Names.

Возвращает Dict из Country ISO ALPHA-2 CODE в качестве ключа и полного имени страны в качестве значения.

print('country_names =')
for key, val in pytz.country_names.items():
    print(key, '=', val, end=',')
print('\n')
print('IN full name =', pytz.country_names['IN'])

Выход:

country_names =
AD = Andorra,AE = United Arab Emirates, ... , ZW = Zimbabwe,

IN full name = India

country_timezones.

Возвращает Dict Country ISO Alpha-2 Code в качестве ключа и списка поддерживаемых часовых поясов в качестве значения.

print('country_timezones =')
for key, val in pytz.country_timezones.items():
    print(key, '=', val, end=',')
print('\n')
print('Supported timezones by US =', pytz.country_timezones['US'])

Выход:

country_timezones =
AD = ['Europe/Andorra'],AE = ['Asia/Dubai'],...,ZW = ['Africa/Harare'],

Supported timezones by US = ['America/New_York', 'America/Detroit', 'America/Kentucky/Louisville', 'America/Kentucky/Monticello', 'America/Indiana/Indianapolis', 'America/Indiana/Vincennes', 'America/Indiana/Winamac', 'America/Indiana/Marengo', 'America/Indiana/Petersburg', 'America/Indiana/Vevay', 'America/Chicago', 'America/Indiana/Tell_City', 'America/Indiana/Knox', 'America/Menominee', 'America/North_Dakota/Center', 'America/North_Dakota/New_Salem', 'America/North_Dakota/Beulah', 'America/Denver', 'America/Boise', 'America/Phoenix', 'America/Los_Angeles', 'America/Anchorage', 'America/Juneau', 'America/Sitka', 'America/Metlakatla', 'America/Yakutat', 'America/Nome', 'America/Adak', 'Pacific/Honolulu']

Пример Python Pytz

Давайте посмотрим на некоторые примеры создания экземпляра DateTime с информацией о часовой зоне.

# getting utc timezone
utc = pytz.utc

# getting timezone by name
ist = pytz.timezone('Asia/Kolkata')

# getting datetime of specified timezone
print('UTC Time =', datetime.now(tz=utc))
print('IST Time =', datetime.now(tz=ist))

Выход:

UTC Time = 2018-09-20 09:16:46.313898+00:00
IST Time = 2018-09-20 14:46:46.313951+05:30

localize ()

Мы можем создать экземпляр TimeZone Aware DateTime от данных экземпляра DateTime с использованием функции Localize (). Обратите внимание, что если вы создаете текущий экземпляр DateTime, вы должны использовать его тщательно, иначе вы получите неправильную информацию, если есть несоответствие между локальной системой TimeZone и Pytz TimeZone.

# using localize() function, my system is on IST timezone
local_datetime = ist.localize(datetime.now())
print('IST Current Time =', local_datetime.strftime('%Y-%m-%d %H:%M:%S %Z%z'))
print('Wrong UTC Current Time =', utc.localize(datetime.now()).strftime('%Y-%m-%d %H:%M:%S %Z%z'))

Выход:

IST Current Time = 2018-09-20 14:53:54 IST+0530
Wrong UTC Current Time = 2018-09-20 14:53:54 UTC+0000

Обратите внимание, что я использую функцию strftime () для печати информации о часовой зоне, когда dateTime отформатирован на строку.

Преобразование часовых поясов

Мы можем использовать AstimeZone () Функция, чтобы получить время в другой часовой пояс. Следующий фрагмент кода преобразует предыдущий экземпляр IST DateTime в Time Time.

# converting IST to UTC
utc_datetime = local_datetime.astimezone(utc)
print('IST Current Time =', local_datetime.strftime('%Y-%m-%d %H:%M:%S %Z%z'))
print('UTC Time =', utc_datetime.strftime('%Y-%m-%d %H:%M:%S %Z%z'))

Выход:

IST Current Time = 2018-09-20 14:56:03 IST+0530
UTC Time = 2018-09-20 09:26:03 UTC+0000

Ссылка: Pypi Docs.