Python Datetime 모듈을 사용할 때 주의하십시오.

나는 버그의 원인이 순진한 datetime 객체를 사용하고 있다는 것을 발견할 때까지 Python datetime으로 잠시 동안 버그와 씨름하고 있었습니다. 버그가 무엇인지는 글이 길어지므로 쓰지 않겠습니다.

Datetime은 표준 시간대가 없는 datetime 객체를 의미하는 순진한 datetime 객체를 허용합니다. 예를 들어:

import datetime as dt

t = dt.datetime.now() # this is naive datetime object
print(t) # => 2020-09-23 22:28:36.836077 

다른 커뮤니티 패키지를 사용하여 datetime을 문자열 또는 json으로 변환하기 시작할 때 문제가 발생합니다. 패키지는 순진한 datetime 객체가 UTC 시간 또는 현지 시간을 기반으로 한다고 가정합니다. 변환 후 시간은 문제가 무엇인지 모르고 순진한 datetime 개체를 사용하고 있다는 경고 없이 달라집니다. 이러한 종류의 문제를 방지하려면 항상 다음과 같이 시간대 정보와 함께 datetime 모듈을 사용하십시오.

import datetime as dt
import pytz

t = dt.datetime.now(tz=pytz.utc) # this is aware datetime object
print(t) # => 2020-09-23 22:28:36.836077+00:00

다음과 같이 원하는 시간대를 지정할 수 있습니다.


t = dt.datetime.now(tz=pytz.timezone('UTC'))
t1 = dt.datetime.now(tz=pytz.timezone('Asia/Riyadh'))

print(t) # => 2020-09-23 22:55:07.635498+00:00
print(t1) # => 2020-09-24 01:55:07.670677+03:00

사용 가능한 시간대 목록을 확인하려면this link on Wikipedia

좋은 웹페이지 즐겨찾기