본문 바로가기
Python

Python - "datetime" 클래스의 "utcnow" 메서드는 더 이상 사용되지 않습니다.

by 올엠 2024. 12. 10.
반응형

Python 3.12 버전부터 경고가 나타나는데 utcnow가 사라진다는 것이다.

Python 기본적인 타임 포맷은 타임값이 들어가지 않는 방식을 채택하고 있었다.

>>> from datetime import datetime, timezone
>>>
>>>
>>> print(datetime.utcnow())
2024-12-10 00:52:07.010333
>>>
>>> print(datetime.now(timezone.utc))
2024-12-10 00:52:07.550513+00:00

그리고 타임값은 timezone을 사용할 때만 추가되었다.

Python에서는 이 부분이 혼선을 초래한다고 판단하여 utcnow를 제거하고, now를 사용하도록 권장하고 있는 것으로 보인다.

하지만 이는 과거 코드들, utcnow 를 사용하여 타임존 값 없이 사용하는 경우에는 타임 포맷이 없는 기준으로 코드를 사용하고 있어서 문제가 되기 때문에 계속 타임값을 제거해야 하는 이슈가 발생할 수 있다.

과거 개발에서는 타임존 없이 사용

이를 우해서 타임존을 강제로 제거하는 코드를 제공하는데, 바로 replace를 이용해서 tzinfo=None을 통해 timezone을 제거 할 수 있다.

print(datetime.now(timezone.utc).replace(tzinfo=None))

 

반응형