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

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

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

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

生徒

「先生、同じPythonでも、海外の時間と日本の時間ってどうやって扱えばいいんですか?」

先生

「とても大切なポイントですね。Pythonでは、pytzzoneinfoという機能を使えば、簡単にタイムゾーンを扱えるんですよ。」

生徒

「へえ〜、でも“タイムゾーン”ってそもそも何ですか?」

先生

「じゃあまずは、タイムゾーンの意味から丁寧に説明していきましょう!」

-

1. タイムゾーンとは何か?初心者にもわかりやすく解説

1. タイムゾーンとは何か?初心者にもわかりやすく解説
1. タイムゾーンとは何か?初心者にもわかりやすく解説

タイムゾーン(time zone)とは、地球上の特定の地域で共通して使われる「標準時刻」の区分のことです。地球は自転しているため、太陽が昇るタイミングは場所によって異なります。もし世界中で同じ時計を使っていたら、ある国ではお昼の12時なのに外は真っ暗…という混乱が起きてしまいます。これを防ぐために、国や地域ごとに「ここからここまではこの時間を使おう」とルールを決めているのがタイムゾーンです。

ポイント:
  • UTC(協定世界時): 世界の時間の基準点。ロンドン付近を通る経線(本初子午線)が基準となっています。
  • 時差: UTCからどれだけ時間がズレているかを表します。

例えば、日本のタイムゾーンは「Asia/Tokyo(アジア・トウキョウ)」と呼ばれます。日本は世界の基準であるUTCよりも9時間早く進んでいるため、表記上は「UTC+9」となります。ニューヨークであれば、冬時間の間は「UTC-5」となり、日本とは14時間の時差(日本の方が14時間進んでいる)が生じます。

プログラミングでこのタイムゾーンを意識しないと、「予約システムで予約したはずの時間が、海外のサーバー上では昨日の日付になっていた!」といったミスが起こります。未経験の方でも、まずは「場所によって時計の針が指す位置が違うんだな」というイメージを持っておけば大丈夫です。

Pythonでこの「時間のズレ」を確認する簡単なコードを見てみましょう。ここでは特別な設定をせず、単純に「今の環境の時計」を表示する例です。


from datetime import datetime

# あなたのパソコンやサーバーの設定に基づいた「現在の時刻」を表示します
now = datetime.now()

print("現在の時刻:", now)
# 出力例: 2026-01-30 14:00:00.123456
# ※これだけでは「どこの国の時間か」という情報が含まれていないのがわかります

このように、単純な取得だけでは「どこの国の時間か」という情報(タイムゾーン情報)が欠落しています。これを補う方法を、次の章から詳しく学んでいきましょう。

2. Pythonでタイムゾーンを扱うには?

2. Pythonでタイムゾーンを扱うには?
2. Pythonでタイムゾーンを扱うには?

Pythonでは、日時(にちじ)を扱うときにdatetimeモジュールを使います。でも、このままだとタイムゾーンの情報がついていません。そこで使うのが以下の2つです。

  • pytz:古くから使われているライブラリ。多くの解説サイトで紹介されています。
  • zoneinfo:Python3.9以降に標準搭載された新しい方法。追加インストール不要。

3. pytzを使ったタイムゾーンの設定

3. pytzを使ったタイムゾーンの設定
3. pytzを使ったタイムゾーンの設定

pytzを使うと、世界中のタイムゾーンに変換できます。インストールが必要ですが、広く使われています。

まずはインストールしましょう。


pip install pytz

次に、日本とニューヨークの現在時刻を表示するコード例です。


from datetime import datetime
import pytz

# タイムゾーンの設定
tokyo = pytz.timezone("Asia/Tokyo")
ny = pytz.timezone("America/New_York")

# 現在時刻を取得して、タイムゾーンを付ける
now_tokyo = datetime.now(tokyo)
now_ny = now_tokyo.astimezone(ny)

print("日本時間:", now_tokyo)
print("ニューヨーク時間:", now_ny)

日本時間: 2025-09-03 21:00:00+09:00
ニューヨーク時間: 2025-09-03 08:00:00-04:00

このようにtimezone()で地域を指定し、datetime.now()に渡すことで、その地域の現在時刻がわかります。

4. zoneinfoを使ったタイムゾーンの設定(Python3.9以降)

4. zoneinfoを使ったタイムゾーンの設定(Python3.9以降)
4. zoneinfoを使ったタイムゾーンの設定(Python3.9以降)

zoneinfoは、Python3.9以降で標準で使えるタイムゾーン管理機能です。追加のインストールは不要で、シンプルに使えます。


from datetime import datetime
from zoneinfo import ZoneInfo

# 現在時刻(タイムゾーン付き)
now_tokyo = datetime.now(ZoneInfo("Asia/Tokyo"))
now_ny = now_tokyo.astimezone(ZoneInfo("America/New_York"))

print("日本時間:", now_tokyo)
print("ニューヨーク時間:", now_ny)

日本時間: 2025-09-03 21:00:00+09:00
ニューヨーク時間: 2025-09-03 08:00:00-04:00

ZoneInfoを使うと、pytzと同じようにタイムゾーン変換ができますが、より現代的でシンプルな書き方ができます。

-

5. UTCとは?世界の基準時間を知ろう

5. UTCとは?世界の基準時間を知ろう
5. UTCとは?世界の基準時間を知ろう

UTC(協定世界時)とは、世界中で共通に使われる「基準の時間」です。インターネットの世界や国際的なデータ管理では、UTCで時間を統一することがよくあります。

たとえば、Pythonで現在のUTC時刻を取得するには次のように書きます。


from datetime import datetime, timezone

now_utc = datetime.now(timezone.utc)
print("UTC時間:", now_utc)

UTC時間: 2025-09-03 12:00:00+00:00

UTCはタイムゾーンの基準としてとても重要なので、覚えておきましょう。

6. タイムゾーン変換のよくある使い方と注意点

6. タイムゾーン変換のよくある使い方と注意点
6. タイムゾーン変換のよくある使い方と注意点

実際に開発の現場では、以下のような場面でタイムゾーンの操作が必要になります。

  • 国際的なユーザーがいるWebサービス
  • サーバーがUTCで動いていて、日本時間に変換したいとき
  • 異なる地域のスケジュールを比較するとき

注意点として、タイムゾーンのないdatetime.now()は、パソコンの設定によって結果が変わるので注意しましょう。常にtimezoneZoneInfoをつける習慣をつけると安全です。

7. タイムゾーン一覧を確認する方法

7. タイムゾーン一覧を確認する方法
7. タイムゾーン一覧を確認する方法

使えるタイムゾーンの名前を調べたいときは、次のコードで一覧を出すことができます。


import pytz

for tz in pytz.all_timezones:
    print(tz)

たとえば、「Asia/Tokyo」や「Europe/London」など、たくさんの地域名が表示されます。zoneinfoでもほぼ同じ名前が使えます。

コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

関連記事:
カテゴリの一覧へ
新着記事
New1
PHP
PHPのhiddenフィールドとは?初心者でもわかる使い方とセキュリティ対策をやさしく解説!
New2
Python
Pythonのデコレータ(@decorator)とは?関数を拡張する仕組みを解説
New3
Python
Pythonで祝日判定する方法を完全解説!初心者でもわかるholidaysモジュール入門
New4
Python
Pythonのタプルの要素を変更できない理由とその回避策を初心者向けに解説
-
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonで文字列が数値か判定する方法!isdigit()・isnumeric()の違い
No.2
Java&Spring記事人気No2
PHP
PHPのCookieのSecure, HttpOnly, SameSite設定を初心者向けに解説
No.3
Java&Spring記事人気No3
PHP
PHP のコンストラクタ(__construct)とは?使い方を解説
No.4
Java&Spring記事人気No4
Python
PythonでExcelファイル(.xlsx)を操作する方法を徹底解説!初心者でもできるopenpyxl・pandasの使い方
No.5
Java&Spring記事人気No5
Python
Pythonの変数宣言の方法とは?型ヒント(type hints)の使い方を初心者向けに解説!
No.6
Java&Spring記事人気No6
Python
Pythonのインストール&環境構築!Windows・Mac・Linuxでの手順を初心者向けに解説
No.7
Java&Spring記事人気No7
PHP
PHP の基本構文(開始タグ・コメント・インデント)を完全ガイド!初心者向け解説
No.8
Java&Spring記事人気No8
PHP
PHP の文字列操作を完全ガイド!初心者でもわかる連結・置換・フォーマット
-
-