カテゴリ: Python 更新日: 2026/01/03

Pythonで異なるタイムゾーンの時間を扱う方法を徹底解説!初心者でもわかるpytzとzoneinfo

Pythonで異なるタイムゾーンの時間を扱う方法(pytz / zoneinfo)
Pythonで異なるタイムゾーンの時間を扱う方法(pytz / zoneinfo)

先生と生徒の会話形式で理解しよう

生徒

「Pythonで世界の時間を扱いたいんですが、国によって時間が違うのでややこしく感じます。どうやって扱えば良いんでしょうか?」

先生

「Pythonにはタイムゾーンを扱うための仕組みがあって、世界の時間を正しく扱えるようになっています。特にpytzzoneinfoという方法がよく使われるよ。」

生徒

「名前は聞いたことがあるけど、違いがよくわかりません。どっちを使うべきですか?」

先生

「Pythonの標準機能だけで済ませたいならzoneinfo、昔からの環境でも対応したいならpytzだね。これから順番に説明していくよ。」

1. タイムゾーンとは何か?

1. タイムゾーンとは何か?
1. タイムゾーンとは何か?

タイムゾーンとは、国や地域によって定められた時間の基準のことです。例えば日本は「日本標準時」という基準を使っていて、世界共通の基準であるUTCより九時間進んだ時間を採用しています。アメリカは地域ごとに標準時が異なり、ニューヨークとロサンゼルスでも時間が違います。世界中でアプリやサービスを作るとき、こうした違いを正しく扱うことが大切になります。

2. Pythonでタイムゾーンを扱う方法(初心者向け解説)

2. Pythonでタイムゾーンを扱う方法(初心者向け解説)
2. Pythonでタイムゾーンを扱う方法(初心者向け解説)

Pythonではdatetimeモジュールを使って日時を扱いますが、そのままではタイムゾーンがついていないので、どこの国の時間なのかがわかりません。そのため世界の時間を扱うときはタイムゾーン情報を付ける必要があります。ここでは標準のzoneinfoと、広く使われてきたpytzについて説明します。

3. zoneinfo を使ったタイムゾーン変換(Python標準ライブラリ)

3. zoneinfo を使ったタイムゾーン変換(Python標準ライブラリ)
3. zoneinfo を使ったタイムゾーン変換(Python標準ライブラリ)

zoneinfoはPythonに標準で入っているタイムゾーン機能で、追加のインストール無しで使えるのが特徴です。タイムゾーンを指定するだけで、その地域の正しい時間が取得できます。


from datetime import datetime
from zoneinfo import ZoneInfo

# 日本時間の現在時刻
japan = datetime.now(ZoneInfo("Asia/Tokyo"))
print(japan)

# ニューヨーク時間へ変換
newyork = japan.astimezone(ZoneInfo("America/New_York"))
print(newyork)

タイムゾーン名は「大陸名/都市名」という形式になっています。ニューヨークやロサンゼルスなど、世界中の都市名を指定できます。タイムゾーンを指定すると、その地域独自の夏時間も自動的に判断してくれます。

4. pytz を使ったタイムゾーン変換(従来から使われる方法)

4. pytz を使ったタイムゾーン変換(従来から使われる方法)
4. pytz を使ったタイムゾーン変換(従来から使われる方法)

pytzは以前から広く使われていたライブラリで、zoneinfoよりも長い歴史があります。現在も古いプロジェクトでは使われています。利用するにはインストールが必要ですが、使い方自体はシンプルです。


from datetime import datetime
import pytz

# タイムゾーンを指定して現在時刻を取得
jst = pytz.timezone("Asia/Tokyo")
now_japan = datetime.now(jst)

# ロンドン時間へ変換
london = now_japan.astimezone(pytz.timezone("Europe/London"))
print(london)

pytzを使う場合は、タイムゾーンを指定して日時を生成する必要があります。内部の仕組みがzoneinfoとは少し違うため、どちらを使う場合でもプロジェクトの統一が大切になります。

5. タイムゾーンの違いによる注意点

5. タイムゾーンの違いによる注意点
5. タイムゾーンの違いによる注意点

世界の時間を扱うときに注意すべきことはいくつかあります。例えば夏時間という制度が存在し、国によって一定期間だけ一時間進める仕組みがあります。また同じ国でも地域ごとに標準時が異なることがあり、正確なタイムゾーン名を指定しなければ正しい時間を得られません。さらに、サーバと利用者の住んでいる地域の時間が違う場合、画面に表示される時刻も変わるため、どの基準で保存しどの基準で表示するのかを明確に決めておく必要があります。

6. タイムゾーン付き日時の保存の考え方

6. タイムゾーン付き日時の保存の考え方
6. タイムゾーン付き日時の保存の考え方

世界の時間を扱うとき、保存する際はUTCという世界共通の時間に直して保存する方法がよく使われます。保存した時刻を後で取り出すときに、利用者の地域に合わせてタイムゾーンを変換することで、混乱を防ぎながら正しい時間を表示できます。初心者でも理解しやすい仕組みで、どの国でも同じ基準で時刻を扱えるため便利です。

カテゴリの一覧へ
新着記事
New1
Flask
Flaskアプリの作り方を基礎から学ぼう!初心者が覚えるべき開発の流れとは?
New2
Flask
Flask-WTFでファイルアップロードフォームを完全ガイド!初心者でもわかる画像やPDFのアップロード方法
New3
Flask
FlaskでCSRF対策を実装する方法!安全なフォーム送信を学ぼう
New4
Python
Pythonの文字列型(str)を完全解説!連結・分割・検索の方法を紹介
人気記事
No.1
Java&Spring記事人気No1
Django
Django環境構築の全手順を完全解説!初心者でも迷わないPython・Djangoセットアップガイド
No.2
Java&Spring記事人気No2
Flask
Flask-Loginでユーザー認証を完全ガイド!初心者でもわかるログイン処理の作り方
No.3
Java&Spring記事人気No3
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.4
Java&Spring記事人気No4
Python
PythonでHello Worldを表示するには?初心者向けに最初の1行を実行してみよう
No.5
Java&Spring記事人気No5
Python
Pythonで定数を定義する方法!変更されない変数の書き方と命名ルールを初心者向けに解説
No.6
Java&Spring記事人気No6
Python
Pythonのmatch文(パターンマッチング)とは?switch文の代替としての使い方をやさしく解説
No.7
Java&Spring記事人気No7
Flask
FlaskアプリをNginx + Gunicornで本番運用する方法!初心者でもわかるデプロイ構成の基本
No.8
Java&Spring記事人気No8
Python
Pythonでリストを文字列に変換する方法を完全ガイド!初心者でもわかるjoinの使い方