Python で UTC を CST に変換する

Vaibhhav Khetarpal 2023年10月10日
  1. Python で dateutil.tz モジュールを使用して日付と時刻を UTC から CST に変換する
  2. Python で pytz モジュールを使用して日付と時刻を UTC から CST に変換する
  3. Python で zoneinfo モジュールを使用して日付と時刻を UTC から CST に変換する
Python で UTC を CST に変換する

Python は、非常に洗練された方法で日付と時刻を保存します。このタイプのデータを格納するためのデータタイプがあります。さらに、Python は、日付と時刻を操作するためのいくつかのクラスを提供する datetime モジュールも提供します。

異なるタイムゾーンへの変換は、日付と時刻を操作する上で不可欠な部分です。この記事では、そのような 2つのタイムゾーン、つまり UTC と CST、および前者を後者に変換するために利用できるさまざまな方法について説明します。

datetime モジュールは必須であり、以下の記事に記載されているすべての方法でインポートして使用する必要があります。

Python で dateutil.tz モジュールを使用して日付と時刻を UTC から CST に変換する

dateutil モジュールは、いくつかの重要な拡張機能を提供することにより、標準の datetime モジュールを強化します。dateutil.tz モジュールは、抽象 datetime.tzinfo タイプをサブクラス化するタイムゾーン実装を提供します。

ここでは、tz.gettz() 関数を頻繁に使用します。この関数は、基本的に、引数として渡された指定された文字列からタイムゾーンのオブジェクトを取得します。

次のコードは、dateutil.tz モジュールを使用して、Python で日付と時刻を UTC から CST に変換します。

import datetime
from dateutil import tz

from_zone = tz.gettz("UTC")
to_zone = tz.gettz("America/Chicago")
json_data = {"time": "2021-10-08T08:17:42Z"}
utc = datetime.datetime.strptime(json_data["time"], "%Y-%m-%dT%H:%M:%SZ")
utc = utc.replace(tzinfo=from_zone)
cst = utc.astimezone(to_zone)
print(utc)
print(cst)

上記のコードは、次の出力を提供します。

2021-10-08 08:17:42+00:00
2021-10-08 03:17:42-05:00

Python で pytz モジュールを使用して日付と時刻を UTC から CST に変換する

pytz モジュールは大部分のタイムゾーンをサポートしているため、日付と時刻の変換機能を提供し、プログラマーの Python アプリケーションソフトウェアで簡単なタイムゾーン計算を可能にする機能を提供するのに最適なモジュールです。

さらに、pytz モジュールを使用すると、タイムゾーンを認識するスマートな datetime オブジェクトまたはインスタンスを作成できます。pytz モジュールは手動でインストールする必要があり、pip コマンドを使用して実行できます。

次のコードは、pytz モジュールを使用して、Python で日付と時刻を UTC から CST に変換します

from datetime import datetime, timezone
import pytz

fmt = "%Y-%m-%d %H:%M:%S %Z%z"
e = pytz.timezone("US/Central")

time_from_utc = datetime.fromtimestamp(1607020200, tz=timezone.utc)
time_from = time_from_utc.astimezone(e)
time_from.strftime(fmt)
time_to_utc = datetime.fromtimestamp(1609785000, tz=timezone.utc)
time_to = time_to_utc.astimezone(tz=pytz.timezone("US/Central"))
print(time_to_utc)
print(time_to)

上記のコードは、次の出力を提供します。

2021-01-04 18:30:10+00:00
2021-01-04 12:30:10-06:00

dateutil.tz モジュールと pytz モジュールはどちらも Python で同様のものを実装するために使用されますが、いくつかの違いがあります。

  • pytz モジュールは、dateutil.tz モジュールが提供するものよりも大幅に多く、ほぼすべてのタイムゾーンをサポートします。
  • pytz モジュールのライブラリは大幅に最適化されています。
  • pytz モジュールは歴史的に dateutil.tz よりも高速ですが、最近の 2、3 回の更新でギャップが小さくなっています。
  • pytz モジュールが十分に安定していなかった場合、以前のバージョンの Python では dateutil.tz モジュールの使用をお勧めします。

Python で zoneinfo モジュールを使用して日付と時刻を UTC から CST に変換する

Python 3.9 の導入に伴い、zoneinfo モジュールが登場しました。これにより、タイムゾーンを管理するために他のサードパーティライブラリをインストールする必要がなくなりました。zoneinfo モジュールはそれ自体すべてを扱います。

zoneinfo モジュールは、PEP 615 で指定されているように、IANA タイムゾーンデータベースをサポートできる強力なタイムゾーン実装を提供するために使用されます。

次のコードは、zoneinfo モジュールを使用して、Python で日付と時刻を UTC から CST に変換します。

# >= Python 3.9
from datetime import datetime
from zoneinfo import ZoneInfo

naive_datetime = datetime(2021, 10, 8, 12, 0, 0)
user_tz_preference = ZoneInfo("US/Central")

user_datetime = naive_datetime.replace(tzinfo=user_tz_preference)
user_datetime = datetime(2011, 10, 26, 12, tzinfo=ZoneInfo("US/Central"))
utc_datetime = user_datetime.astimezone(ZoneInfo("UTC"))
print(user_datetime.isoformat())
print(utc_datetime.isoformat())

上記のコードは、次の出力を提供します。

# 2021-10-08T12:00:00-06:00
# 2021-10-08T19:00:00+00:00
Vaibhhav Khetarpal avatar Vaibhhav Khetarpal avatar

Vaibhhav is an IT professional who has a strong-hold in Python programming and various projects under his belt. He has an eagerness to discover new things and is a quick learner.

LinkedIn

関連記事 - Python DateTime