DST 시간으로 timedelta 차이 찾기 (Python)

Aug 25 2020

2020-01-01 00:00:00 및 2020-04-01 00:00:00과 같은 두 개의 날짜 시간이 주어지면 두 날짜 사이의 시간 수를 더하기 / 빼기로 인한 시간 단위로 구하고 싶습니다. 일광 절약 시간 . 어떻게 진행할 수 있을지 모르겠습니다.

답변

2 MrFuppes Aug 25 2020 at 14:39

기본적으로, 파이썬은 timedelta인식 날짜 객체 (시간대가 부착 된 것)에 대한 당신 벽에 시간 차이 준다 - 절대하지 시간 (물리적 의미를,로 두 번째와 SI 단위 ).

"DST 인식"타임 델타를 얻으려면 먼저 datetime 개체가 특정 시간대 (DST 포함)로 지역화되었는지 확인합니다. 그런 다음 두 개의 datetime 개체의 UTC 오프셋을 고려합니다. 예를 들어

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

자세한 내용 은 Paul Ganssle 의 Semantics of timezone-aware datetime arithmetic blog post를 추천합니다 .