Tìm chênh lệch thời gian với giờ DST (Python)

Aug 25 2020

Với hai lịch ngày chẳng hạn như 2020-01-01 00:00:00 và 2020-04-01 00:00:00, tôi muốn tính thời gian giữa hai ngày về số giờ với bất kỳ phép cộng / trừ nào do thời gian tiết kiệm ánh sáng ban ngày . Tôi không chắc mình có thể tiếp tục như thế nào.

Trả lời

2 MrFuppes Aug 25 2020 at 14:39

Theo mặc định, Python timedeltacung cấp cho bạn chênh lệch thời gian tường đối với các đối tượng datetime nhận biết (những đối tượng có múi giờ đi kèm) - không phải thời gian tuyệt đối (theo nghĩa vật lý; với thứ hai là đơn vị SI ).

Để có được bộ đếm thời gian "nhận biết DST", trước tiên hãy đảm bảo rằng các đối tượng datetime được bản địa hóa theo một múi giờ nhất định (có DST). Sau đó, bạn tính đến phần bù UTC của hai đối tượng datetime; ví dụ như

from datetime import datetime
from dateutil.tz import gettz

t0, t1 = "2020-03-07 00:00:00", "2020-03-09 00:00:00"
# to datetime object
t0, t1 = datetime.fromisoformat(t0), datetime.fromisoformat(t1)
# set appropriate timezone
tzone = gettz("US/Eastern")
t0, t1 = t0.replace(tzinfo=tzone), t1.replace(tzinfo=tzone)
# check if UTC offset changed
utcdelta = t1.utcoffset() - t0.utcoffset()
# now calculate the timedelta
td = t1 - t0 - utcdelta
print(td)
# 1 day, 23:00:00

Để đọc thêm, tôi giới thiệu bài đăng trên blog Số học nhận biết múi giờ theo múi giờ của Paul Ganssle.