1. はじめに
Pythonで日時を扱う際、タイムゾーンの指定はとても重要です。特に国際的なサービスやシステム開発では、UTCやJST(日本標準時)だけでなく、世界中のタイムゾーンに対応する必要があります。
本記事では、「Python|タイムゾーンの一覧を取得する」というテーマで、Python初心者〜中級者向けに、タイムゾーンのリストを取得する方法を詳しく解説します。
pytz
という外部ライブラリを使えば、数百種類ある世界のタイムゾーンを簡単に取得・利用できます。この記事を読めば、自分のアプリでどのタイムゾーンが使えるのか一覧で確認できるようになります。
2. Pythonでタイムゾーン一覧を取得する基本
pytzとは?
pytz
は、Pythonでタイムゾーンを扱う際によく使用されるライブラリです。IANA Time Zone Database(世界標準のタイムゾーンデータ)に基づいており、信頼性が高く、広く実務でも使われています。
タイムゾーンの一覧を取得するコード
まずは、pytzを使って利用可能なタイムゾーン一覧を取得する基本的なコードを見てみましょう。
import pytz
# タイムゾーンの一覧を取得
timezones = pytz.all_timezones
# 上位10件だけ表示してみる
for tz in timezones[:10]:
print(tz)
実行結果:
Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers
Africa/Asmara
Africa/Asmera
Africa/Bamako
Africa/Bangui
Africa/Banjul
Africa/Bissau
pytz.all_timezones
で、IANAに登録されているすべてのタイムゾーン名(約600個)をリスト形式で取得できます。
pytzのインストール方法
pytzは標準ライブラリではないため、最初にインストールが必要です。以下のコマンドをターミナルまたはコマンドプロンプトで実行してください。
pip install pytz
3. よくある使い方・応用例
すべてのタイムゾーンをアルファベット順に表示
用途によっては、タイムゾーンをソートして表示したいことがあります。次のコードでは一覧をソートして表示します。
import pytz
# タイムゾーンをアルファベット順で表示
for tz in sorted(pytz.all_timezones):
print(tz)
実行結果:
Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
...
Zulu
特定のキーワードを含むタイムゾーンだけを抽出
たとえば「Asia」から始まるタイムゾーンだけを抽出したい場合は、以下のように条件分岐を使います。
import pytz
# Asia地域のタイムゾーンのみ表示
asia_timezones = [tz for tz in pytz.all_timezones if tz.startswith('Asia')]
for tz in asia_timezones:
print(tz)
実行結果:
Asia/Aden
Asia/Almaty
Asia/Amman
Asia/Anadyr
Asia/Aqtau
...
実務での応用:ユーザーのタイムゾーン選択UIに活用
Webアプリやデスクトップアプリで、ユーザーがタイムゾーンを選択する機能を作る際、この一覧をドロップダウンメニューなどに利用できます。ユーザーごとの日時変換や通知機能などに役立ちます。
4. 注意点・エラー対策
pytzのインストール忘れ
ModuleNotFoundError: No module named 'pytz'
というエラーが出る場合は、pytzがインストールされていません。
pip install pytz
を再度実行してください。
使用タイムゾーン名の誤り
たとえばAsia/Tokyo
ではなくJapan/Tokyo
のように存在しない名称を使うと、UnknownTimeZoneError
が発生します。
タイムゾーン名は、必ずpytz.all_timezones
で取得した一覧の中から使用しましょう。
datetimeとの組み合わせでの注意
pytzを使ってdatetimeにタイムゾーン情報を追加する際は、localize()
メソッドを使う必要があります。以下のように書きます。
from datetime import datetime
import pytz
# タイムゾーンを設定して日時を生成
tz_tokyo = pytz.timezone('Asia/Tokyo')
dt = tz_tokyo.localize(datetime(2025, 1, 1, 12, 0, 0))
print(dt)
実行結果:
2025-01-01 12:00:00+09:00
5. まとめ
今回は「Python|タイムゾーンの一覧を取得する」というテーマで、pytzを使ったタイムゾーンのリスト取得方法とその応用例について解説しました。
pytz.all_timezones
で世界中のタイムゾーンを一覧取得できる- 特定の地域(例:Asia)だけを抽出可能
- ユーザー設定や時間変換など実務でも非常に有用
タイムゾーンの一覧を扱えるようになることで、国際対応アプリやローカル時間調整の処理がグッとスマートになります。ぜひ自分のプロジェクトで活用してみてください。
学習のコツ: pytzで取得したタイムゾーン名をもとに、実際の日時変換処理と組み合わせて練習すると理解が深まります!