본문 바로가기

trouble-shooting

TypeError: can't subtract offset-naive and offset-aware datetimes

말 그대로 시간대가 설정되지 않은 datetime객체와 시간대가 설정된 datetime객체간에 뺄셈 연산을 할 수 없다는 뜻이다.

예를 들면 아래와 같다.

from datetime import datetime as dt, timezone as tz

# offset-naive
d1 = dt(2022, 11, 22)

# offset-aware
d2 = dt(2022, 11, 21, tzinfo=tz.utc)

print(d1-d2)

따라서 둘 다 시간대를 갖도록 해주거나, 둘 다 시간대를 없애면 연산이 가능하다.

from datetime import datetime as dt, timezone as tz

# offset-naive
d1 = dt(2022, 11, 22)

# offset-aware
d2 = dt(2022, 11, 21, tzinfo=tz.utc)

d1.replace(tzinfo=d2.tzinfo)
print(d1-d2)