我有一些日期和時間資料作為格式如下的字串,在 UTC 中:
,utc_date_and_time, api_calls
0,2022-10-20 00:00:00,12
1,2022-10-20 00:05:00,14
2,2022-10-20 00:10:00,17
有沒有辦法在這里創建另一個總是代表那個時間的列,但它適用于倫敦/歐洲?
,utc_date_and_time, api_calls, london_date_and_time
0,2022-10-20 00:00:00,12,2022-10-20 01:00:00
1,2022-10-20 00:05:00,14,2022-10-20 01:05:00
2,2022-10-20 00:10:00,17,2022-10-20 01:10:00
我想撰寫一些代碼,在一年中的任何時候都將顯示倫敦的時間——但我擔心當倫敦/英國的時區發生變化時,我的代碼會中斷。
uj5u.com熱心網友回復:
使用pandas,您將轉換為日期時間,指定 UTC,然后呼叫tz_convert:
df
Out[9]:
utc_date_and_time api_calls
0 2022-10-20 00:00:00 12
1 2022-10-20 00:05:00 14
2 2022-10-20 00:10:00 17
df["utc_date_and_time"] = pd.to_datetime(df["utc_date_and_time"], utc=True)
df["london_date_and_time"] = df["utc_date_and_time"].dt.tz_convert("Europe/London")
df
Out[12]:
utc_date_and_time api_calls london_date_and_time
0 2022-10-20 00:00:00 00:00 12 2022-10-20 01:00:00 01:00
1 2022-10-20 00:05:00 00:00 14 2022-10-20 01:05:00 01:00
2 2022-10-20 00:10:00 00:00 17 2022-10-20 01:10:00 01:00
在 vanilla Python >= 3.9 中,您將讓zoneinfo處理轉換;
from datetime import datetime
from zoneinfo import ZoneInfo
t = "2022-10-20 00:00:00"
# to datetime, set UTC
dt = datetime.fromisoformat(t).replace(tzinfo=ZoneInfo("UTC"))
# to london time
dt_london = dt.astimezone(ZoneInfo("Europe/London"))
print(dt_london)
2022-10-20 01:00:00 01:00
uj5u.com熱心網友回復:
您應該使用 UTC 時區
from datetime import datetime, timezone
datetime.now(timezone.utc).isoformat()
輸出:
2022-10-25T15:27:08.874057 00:00
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/521364.html
