【Python】zoneinfoライブラリとは?主要メソッドや活用シーンをわかりやすく解説

Pythonで日付や時刻を扱う際に重要なのがタイムゾーンの処理です。

その中でも zoneinfo は、Python 3.9から標準ライブラリに追加された、タイムゾーン処理のための便利なライブラリです。

この記事では zoneinfo の基本的な使い方から、活用シーン、注意点までをわかりやすく丁寧に解説します。

zoneinfoとは?

zoneinfo は、Pythonにおけるタイムゾーン処理のためのライブラリです。

世界各地の時差やサマータイム(夏時間)を考慮した正確な日時計算を行うことができます。

従来使われていた pytz ライブラリの代替として、Python 3.9以降では標準ライブラリとして利用できるようになりました。

基本的な使い方

まずは、基本的なタイムゾーンの作成と現在時刻の表示を見てみましょう。

このコードでやっていることは:

  1. ZoneInfo("Asia/Tokyo") で日本のタイムゾーンを作成
  2. datetime.now() に作成したタイムゾーンを渡して現在時刻を取得
  3. 同様にニューヨークの時間も取得して比較

タイムゾーンの名前は 地域/都市 の形式で指定します。

具体例:時刻変換で使う

zoneinfo はタイムゾーン間の時刻変換にも頻繁に使われます。

このように:

  1. .astimezone() でタイムゾーンを変換
  2. 同じ瞬間を異なるタイムゾーンで表示
  3. 国際会議の時間調整などに便利

この一連の操作で、世界中のメンバーがそれぞれの地域時間で会議時刻を確認できます。

よく使うタイムゾーンの指定例

zoneinfoでは、以下のような形式でタイムゾーンを指定できます。

地域 書き方の例
日本 "Asia/Tokyo"
韓国 "Asia/Seoul"
中国 "Asia/Shanghai"
アメリカ東海岸 "America/New_York"
アメリカ西海岸 "America/Los_Angeles"
イギリス "Europe/London"
ドイツ "Europe/Berlin"
UTC "UTC"

利用可能なタイムゾーンの一覧は、zoneinfo.available_timezones() で確認できます。

zoneinfoの主要メソッド

よく使われる主要なクラスやメソッドを以下にまとめます。

機能 説明 使用例
ZoneInfo(tzname) 指定したタイムゾーン名(例: "Asia/Tokyo")の情報を取得 ZoneInfo("Asia/Tokyo")
available_timezones() 利用可能な全タイムゾーン一覧を取得(Python 3.11以降) for z in available_timezones(): print(z)
.astimezone() 別のタイムゾーンへ日時を変換(datetimeのインスタンスメソッド) dt.astimezone(ZoneInfo("UTC"))

たとえば、日本時間をアメリカ時間に変換する場合、次のように書きます。

複雑な日時処理も、zoneinfo を使えば簡潔に扱えるようになります。

zoneinfoを使うときの注意点

Python 3.9未満では使用不可

zoneinfo はPython 3.9以降でのみ利用できます。

サマータイム(夏時間)の扱い

サマータイムがある地域では、時刻変換時に注意が必要です。

特に、サマータイムの切り替わり時期付近では予期しない結果になることがあります。

存在しないタイムゾーンを指定した場合

存在しないタイムゾーン名を指定すると ZoneInfoNotFoundError が発生します:

まとめ

今回はPythonの zoneinfo ライブラリについて紹介しました。

  • zoneinfo はタイムゾーンを扱うためのPython標準ライブラリ
  • ZoneInfo("地域/都市") の形式でタイムゾーンを指定できる
  • .astimezone() メソッドで簡単にタイムゾーン変換が可能
  • サマータイムや存在しないタイムゾーンの扱いには注意が必要

zoneinfo をマスターすれば、グローバルなWebアプリケーションでの時刻表示や、ログファイルの時刻管理、国際的なスケジューリングシステムなど、様々な場面で正確な時刻処理を行えるようになります。

Pythonで時刻を扱う際の必須知識として、ぜひしっかり理解しておきましょう。

おすすめの記事