在 Python 中將 UTC 轉換為 CST
-
在 Python 中使用
dateutil.tz
模組將日期和時間從 UTC 轉換為 CST -
在 Python 中使用
pytz
模組將日期和時間從 UTC 轉換為 CST -
在 Python 中使用
zoneinfo
模組將日期和時間從 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.tz
和 pytz
模組都用於在 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 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