Python で UTC を CST に変換する
-
Python で
dateutil.tz
モジュールを使用して日付と時刻を UTC から CST に変換する -
Python で
pytz
モジュールを使用して日付と時刻を UTC から CST に変換する -
Python で
zoneinfo
モジュールを使用して日付と時刻を 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 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