반응형
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를 사용하세요.
반응형
'Knowledge > IT, 인터넷' 카테고리의 다른 글
Docker에서 시간대(TZ)를 Asia/Seoul로 변경하는 방 (1) | 2025.05.22 |
---|---|
Docker 컨테이너 재부팅 후 Flask 접속 불가? 원인과 해결 방법 총정리 (0) | 2025.05.22 |
SQLite에서 PRIMARY KEY 제거하는 방법 완전 정리 (+실습 예제) (1) | 2025.05.22 |
SIM 스와핑이란? 당신의 번호를 노리는 해커의 기술 (4) | 2025.05.10 |
HSS (Home Subscriber Server)란 무엇일까? (1) | 2025.05.10 |
댓글