Pythonでタイムゾーンを扱う完全ガイド!初心者でもわかる日時操作(pytz / zoneinfo)
生徒
「Pythonで海外の時間を扱いたいんですが、日本時間とどうやって使い分けるんですか?」
先生
「Pythonでは、タイムゾーンという考え方を使うと、日本や海外の時間を正しく扱えます。」
生徒
「タイムゾーンって、そもそも何ですか?」
先生
「それでは、パソコンを触ったことがない人でも分かるように、最初から説明していきます。」
1. タイムゾーンとは?Pythonで日時操作が必要な理由
タイムゾーンとは、国や地域ごとに決められた「時間のルール」のことです。日本では朝9時でも、アメリカでは前日の夜ということがあります。 これは地球が丸く、太陽が当たる位置が場所によって違うためです。
Pythonの日時操作では、このタイムゾーンを意識しないと「表示される時間がズレる」「予約時間が間違う」などの問題が起こります。 特に、Webサービス、海外向けサイト、チャットアプリ、予約システムでは必須の知識です。
この記事では「Python 日時操作」「Python タイムゾーン」「pytz 使い方」「zoneinfo 使い方」といったキーワードを意識しながら、 初心者向けに丁寧に解説します。
2. Pythonのdatetimeとは?時間を扱う基本の考え方
Pythonには、日付や時間を扱うためのdatetimeという標準機能があります。
これは「何年何月何日 何時何分何秒」という情報をまとめて扱うためのものです。
例えるなら、紙のカレンダーと時計を一つの箱に入れたような存在です。 ただし、そのままでは「どこの国の時間か」が分からない状態です。
from datetime import datetime
now = datetime.now()
print(now)
2026-01-22 10:30:15.123456
この表示だけでは、日本時間なのか、海外時間なのかは分かりません。 そこで登場するのが「タイムゾーン対応」です。
3. pytzとは?Pythonでよく使われてきたタイムゾーン管理
pytzは、Pythonで長年使われてきたタイムゾーン管理用のライブラリです。
ライブラリとは「便利な道具箱」のようなものです。
世界中のタイムゾーン情報が入っており、「Asia/Tokyo」「America/New_York」などの名前で指定できます。
from datetime import datetime
import pytz
tokyo = pytz.timezone("Asia/Tokyo")
now_tokyo = datetime.now(tokyo)
print(now_tokyo)
2026-01-22 10:30:15+09:00
「+09:00」は、日本が世界標準時間より9時間進んでいることを表します。 これで「日本時間」とはっきり分かる日時になります。
4. pytzで海外時間を扱ってみよう(日本とアメリカの比較)
次は、日本とアメリカの時間を同時に扱ってみましょう。 海外の友人とオンラインで約束をするときに役立つ考え方です。
from datetime import datetime
import pytz
tokyo = pytz.timezone("Asia/Tokyo")
newyork = pytz.timezone("America/New_York")
time_tokyo = datetime.now(tokyo)
time_newyork = datetime.now(newyork)
print(time_tokyo)
print(time_newyork)
2026-01-22 10:30:15+09:00
2026-01-21 20:30:15-05:00
同じ瞬間でも、国によって日付や時間が違うことがはっきり分かります。 Pythonのタイムゾーン処理は、こうしたズレを自動で計算してくれます。
5. zoneinfoとは?Python標準の新しいタイムゾーン機能
zoneinfoは、Python 3.9以降で使える新しいタイムゾーン機能です。
追加のインストールが不要で、Pythonに最初から入っています。
初心者の方には「標準で使える=準備が少なくて楽」と覚えておくと安心です。
from datetime import datetime
from zoneinfo import ZoneInfo
now = datetime.now(ZoneInfo("Asia/Tokyo"))
print(now)
2026-01-22 10:30:15+09:00
表示はpytzとほぼ同じですが、書き方が少しシンプルになっています。
6. zoneinfoで日本時間と世界時間を変換する方法
タイムゾーンの便利な点は「時間の変換」ができることです。 日本時間を世界標準時間に直すといった処理も簡単です。
from datetime import datetime
from zoneinfo import ZoneInfo
tokyo_time = datetime.now(ZoneInfo("Asia/Tokyo"))
utc_time = tokyo_time.astimezone(ZoneInfo("UTC"))
print(tokyo_time)
print(utc_time)
2026-01-22 10:30:15+09:00
2026-01-22 01:30:15+00:00
「UTC」とは世界の基準となる時間です。 Pythonではこの基準を使って、各国の時間を正確に計算します。
7. pytzとzoneinfoの違いと初心者におすすめなのは?
pytzは長年使われてきた実績がありますが、インストールが必要です。 一方、zoneinfoはPython標準で、今後はこちらが主流になります。
プログラミング未経験の方や、これからPythonを学ぶ方には、 「準備が少なく、書き方がシンプル」なzoneinfoがおすすめです。
どちらも「Python タイムゾーン」「Python 日時操作」を理解するうえで重要な考え方なので、 仕組みを知ることが一番の近道です。