zoneinfo.ZoneInfo

zoneinfo.ZoneInfo

zoneinfoモジュール

https://docs.python.org/3/library/zoneinfo.htmlからの引用
The zoneinfo module provides a concrete time zone implementation to support the IANA time zone database as originally specified in PEP 615. By default, zoneinfo uses the system’s time zone data if available; if no system time zone data is available, the library will fall back to using the first-party tzdata package available on PyPI.
zoneinfoモジュールは、PEP 615で最初に指定されたIANAタイムゾーンデータベースをサポートするための具体的なタイムゾーン実装を提供します。デフォルトでは、zoneinfoはシステムのタイムゾーンデータを使用します(利用可能な場合)。利用可能なシステムタイムゾーンデータがない場合、ライブラリはPyPIで利用可能なファーストパーティのtzdataパッケージの使用にフォールバックします。

システムのタイムゾーンデータベースの利用

Python3.9からタイムゾーンのライブラリzoneinfoが標準ライブラリに追加されました。
Django4.0からはzoneinfoが標準実装のタイムゾーンライブラリとなりpytzは非推奨となっています。
Django 5.0から pytzはDjangoのサポート対象外となるとのことですので、pytzからzoneinfoに移行をしていった方がよさそうです。

zoneinfoはシステムのタイムゾーンデータベースを利用します。
Windowsシステムなどのタイムゾーンデータベースを利用できない環境ではPyPIからtzdataパッケージをインストールする必要があります。

ライブラリのインストール

pthon3.9からはzoneinfoは標準ライブラリのためライブラリのインストールは必要ありませんが、python3.9より前のバージョンをサポートする場合にはbackportsからインストールする必要があります。

Linuxなどのシステムのタイムゾーンデータベースを利用できるOSの場合

pip install backports.zoneinfo

Windowsなどのシステムのタイムゾーンデータベースを利用できないOSの場合

pip install backports.zoneinfo[tzdata]

サンプル

import datetime
from backports import zoneinfo

utc_tz = zoneinfo.ZoneInfo('UTC')

nowtime = datetime.datetime(2021, 2, 1, 0, 0, 0, tzinfo=utc_tz)
#print(f"{utc_tz}: {nowtime}");
tz_list = []
for timezone_value in zoneinfo.available_timezones():
    zone = zoneinfo.ZoneInfo(timezone_value)
    local = nowtime.astimezone(zone)
    str_local_time = str(local)
    local_time_len = len(str_local_time)
    str_local_time = str(str_local_time)[-6:local_time_len]
    tz_list.append(
        {
            'timezone': str(timezone_value),
            'diff': str_local_time,
        }
    )


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です