我可以知道 和 之間的區別datetime.datetime.utcnow()嗎datetime.datetime.utcnow().replace(tzinfo=datetime.timezone.utc)?
第二個來自Azure Function doc,它已經通過 UTC 時間指定.utcnow(),是否需要添加.replace(tzinfo=datetime.timezone.utc)以再次指定 UTC 時間?根據我的測驗,它們同時輸出。
uj5u.com熱心網友回復:
查看從兩個運算式中獲得的物件表示:
import datetime
dt1 = datetime.datetime.utcnow()
dt2 = datetime.datetime.utcnow().replace(tzinfo=datetime.timezone.utc)
print(repr(dt1))
# datetime.datetime(2022, 5, 18, 7, 33, 42, 993707)
print(repr(dt2))
# datetime.datetime(2022, 5, 18, 7, 33, 42, 993707, tzinfo=datetime.timezone.utc)
第一個運算式為您提供了一個日期時間物件,其屬性設定為當前 UTC 日期/時間。但是該物件是 naive,這意味著它沒有指定為 UTC,tzinfo也沒有設定。第二個運算式通過將 tzinfo 替換為 UTC 來改變這一點。這會對.isoformat輸出產生影響(它在 Azure 檔案中使用):
print(dt1.isoformat())
# 2022-05-18T07:33:42.993707
print(dt2.isoformat())
# 2022-05-18T07:33:42.993707 00:00
第二個運算式附加了 UTC 偏移量,第一個沒有。
為什么關心?
Python 會將天真的日期時間視為本地時間。如果您期望 UTC,那可能會非常令人困惑,因為您使用utcnow了……在大多數情況下,立即設定 tzinfo 是更好的選擇。一個簡潔的運算式給你相同的結果,同時避免 utcnow 將是
datetime.datetime.now(datetime.timezone.utc)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/478147.html
