夏令時從 2021 年 3 月 14 日凌晨 2 點開始。
使用 Pythonzoneinfo創建可識別時區的日期時間,如下所示:
import zoneinfo
from datetime import datetime
tz = zoneinfo.ZoneInfo("US/Eastern")
d0 = datetime(2021, 3, 13, 23, tzinfo=tz)
d1 = datetime(2021, 3, 14, 7, tzinfo=tz)
print(d0, d1, (d1 - d0).total_seconds() / 60 / 60)
我收到輸出:
2021-03-13 23:00:00-05:00 2021-03-14 07:00:00-04:00 8.0
Python 正確地“看到”了這些值(-5 與 -4)之間的 UTC 偏移轉換,但為什么結果時間增量等于 8 而不是 7?
對于它的價值,如下創建時區感知日期時間會產生完全相同的結果:
d0 = datetime(2021, 3, 13, 23).replace(tzinfo=tz)
d1 = datetime(2021, 3, 14, 7).replace(tzinfo=tz)
uj5u.com熱心網友回復:
感謝對我最初問題的討論以及我從Paul Ganssle 的博客文章中獲得的理解,我將我的timedelta.total_seconds()數學替換為:
d1.timestamp() - d0.timestamp()
這給出了我所追求的正確的“實際”時間跨度值。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/444054.html
