我一直對所有這些時間函式感到瘋狂。我有一個特定格式和 UTC 時間的字串。我只想輸出時間,但在另一個時區。這就是我所擁有的,原始的是 X。我希望輸出為“%M:%S”,但時區不同。由于夏令時,我不想硬編碼 timedelta。
x = "2022-10-11T14:00:00Z"
tz = timezone("Europe/Berlin")
tz.localize(datetime.strptime(x, "%Y-%m-%dT%H:%M:%SZ"))
本地化線成功轉換到另一個時區,但我不讓它只顯示最后的時間。
uj5u.com熱心網友回復:
將 Z 決議為 UTC,astimezone用于轉換為您需要的任何 tz:
帶有 pytz 和 strptime 的選項,%z用于決議Z:
from datetime import datetime
import pytz
x = "2022-10-11T14:00:00Z"
dt = datetime.strptime(x, "%Y-%m-%dT%H:%M:%S%z").astimezone(pytz.timezone("Europe/Berlin"))
print(dt)
# 2022-10-11 16:00:00 02:00
pytz 已被棄用,因此這里有一個Python 3.9 解決方案,使用fromisoformatandzoneinfo作為替代方案:
from datetime import datetime
from zoneinfo import ZoneInfo
x = "2022-10-11T14:00:00Z"
dt = datetime.fromisoformat(x.replace("Z", " 00:00")).astimezone(ZoneInfo("Europe/Berlin"))
print(dt)
# 2022-10-11 16:00:00 02:00
如果您使用pandas,pd.to_datetime會自動將 Z 決議為 UTC,因此您只需使用.dt.tz_convert:
import pandas as pd
df = pd.DataFrame({'dt': ["2022-10-11T14:00:00Z"]})
df["dt"] = pd.to_datetime(df["dt"]).dt.tz_convert("Europe/Berlin")
print(df)
# dt
# 0 2022-10-11 16:00:00 02:00
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/516254.html
上一篇:如何在今天之前過濾具有日期欄位值的SQLAlchemy物件?
下一篇:將格式為yyyy-MM-ddTHH:mm:ss.ffffffZ的字串時間戳轉換為SQLServer日期時間而不更改時區
