在 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 模組,該模組提供了幾個用於操作日期和時間的類。

轉換為不同的時區是操作日期和時間的重要部分。在本文中,我們將討論兩個這樣的時區,即 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.tzpytz 模組都用於在 Python 中實現類似的東西,但它們有一些區別。

  • pytz 模組支援幾乎所有的時區,比 dateutil.tz 模組提供的要多得多。
  • pytz 模組的庫明顯更優化。
  • pytz 模組在歷史上比 dateutil.tz 更快,但在最近幾次更新中差距已經縮小。
  • 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