본문 바로가기
python

[python] datetime 변환시 타임존을 설정해야 하는 이유

by hs_seo 2022. 5. 17.

파이썬을 이용하여 문자열을 datetime 형식으로 변경할 때 타임존을 명시적으로 설정하지 않으면 파이썬은 현재 서버의 기본 타임존을 자동으로 설정합니다.

 

모든 서버의 환경이 동일하다면 문제가 없지만, 운영과 테스트환경의 설정이 다른 경우 문제가 발생할 수 있습니다. 아래의 경우 동일한 코드를 실행하였지만 서버의 타임존이 달라서 다른 결과를 보여주고 있습니다.

--------------- 한국 타임존 -----------------
$ python3
Python 3.6.9 (default, Jan 26 2021, 15:33:00)
[GCC 8.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> from datetime import datetime, timedelta, timezone
>>>
>>> created_text = "2022-05-10T08:23:51Z"
>>> created = datetime.strptime(created_text, "%Y-%m-%dT%H:%M:%SZ")
>>> created_unix_time = int(created.timestamp() * 1000)
>>> created_unix_time
1652138631000

--------------- UTC 타임존 -----------------
$ python3
Python 3.8.10 (default, May 12 2021, 15:56:47) 
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from datetime import datetime, timedelta, timezone
>>> 
>>> created_text = "2022-05-10T08:23:51Z"
>>> created = datetime.strptime(created_text, "%Y-%m-%dT%H:%M:%SZ")
>>> created_unix_time = int(created.timestamp() * 1000)
>>> created_unix_time
1652171031000

 

타임존을 설정하고 실행하면 다음과 같이 동일한 결과를 출력합니다.

------------ 한국 타임존 --------------
>>> from datetime import datetime, timedelta, timezone
>>>
>>> created_text = "2022-05-10T08:23:51Z"
>>> created = datetime.strptime(created_text, "%Y-%m-%dT%H:%M:%SZ").replace(tzinfo=timezone.utc)
>>> created_unix_time = int(created.timestamp() * 1000)
>>> created_unix_time
1652171031000

------------- UTC -------------------
>>> from datetime import datetime, timedelta, timezone
>>> 
>>> created_text = "2022-05-10T08:23:51Z"
>>> created = datetime.strptime(created_text, "%Y-%m-%dT%H:%M:%SZ").replace(tzinfo=timezone.utc)
>>> created_unix_time = int(created.timestamp() * 1000)
>>> created_unix_time
1652171031000

 

파이썬을 이용하여 문자열을 datetime으로 변환할 때는 꼭 타임존을 입력하고 변경하는 것이 좋습니다.

 

반응형