Python datetime.utcnow() DeprecationWarning 해결 방법

반응형
Python datetime.utcnow() DeprecationWarning 해결 방법

Python datetime.utcnow() is deprecated 경고 해결 방법

경고 메시지 예시

Python 3.12 이상에서 datetime.utcnow()를 호출하면 아래와 같은 경고가 출력됩니다:

DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal.
Use timezone-aware objects to represent datetimes in UTC.

이제는 timezone-aware datetime 객체를 사용하는 것이 표준입니다.

왜 deprecated 되었을까?

datetime.utcnow()는 timezone 정보가 없는 naive datetime을 반환합니다.
이는 시스템 간 시간 비교나 저장에서 오작동 가능성이 높아 권장되지 않습니다.

추천 대체 코드

Python 3.9 이상 권장 코드

from datetime import datetime, timezone

now = datetime.now(timezone.utc)
print(now.isoformat())

기존 코드 vs 권장 코드

기존 코드경고 없음 (권장)
datetime.utcnow() datetime.now(timezone.utc)

추가 예제: UTC → KST 변환

from datetime import datetime, timezone, timedelta

utc_now = datetime.now(timezone.utc)
kst_now = utc_now.astimezone(timezone(timedelta(hours=9)))

print("UTC:", utc_now)
print("KST:", kst_now)

UTC 시간 기준으로 한국 시간(KST)으로 안전하게 변환하는 방법입니다.

마무리

Python에서 시간 처리는 예외 없이 timezone-aware 객체를 사용하는 것이 안전합니다.
서버 개발, 로그 처리, DB 저장 시 문제가 없도록 utcnow()는 지양하고 timezone.utc를 사용하세요.

반응형