프로젝트를 하다 보면, timestamp와 같이 시간을 기준으로 알고리즘을 작성하는 경우가 많이 있다.
하지만 시간과 관련된 라이브러리는 다양하고, 사용법이 다르다, 시간 절약을 위해 정리해두자.
pytz의 timezone 'Asia/Seoul'의 시차가 +8:28분이다 이 경우 참고하자.
Python3.9이전에는 서울의 경우 1920을 빼주어서 계산하고
Python3.9부터는 zoneinfo가 있으니까 해당 라이브러리를 활용해서 코드를 작성하자
from zoneinfo import ZoneInfo
from datetime import datetime
dt = datetime(2012, 10, 28, 2, 0, tzinfo=ZoneInfo('Asia/Seoul'))
print(dt) # 2012-10-28 02:00:00+09:00
# 아래의 strptime과 합쳐서 사용하는 코드
dt_chk = datetime.strptime(chk_time, '%Y-%m-%d %H:%M').replace(tzinfo=zoneinfo.ZoneInfo('Asia/Seoul'))
날짜와 시간(datetime)을 문자열로 출력하려면 strftime
날짜와 시간 형식의 문자열을 datetime으로 변환하려면 strptime을 사용하면 된다.
import datetime
now = datetime.datetime.now()
date = now.strftime('%Y-%m-%d')
print(date) # 2024-10-18
time = now.strftime('%H:%M:%S')
print(time) # 16:20:12
datetime = now.strftime('%Y-%m-%d %H:%M:%S')
print(datetime) # 2024-10-18 16:20:12
위와 같이 datetime을 문자열로 변환할 수 있고, datetime.strftime(형식)으로 사용할 수 있다.
다음으로 strptime의 경우
import datetime
str_datetime = '2021-04-08 21:31:48'
currdate = datetime.datetime.strptime(str_datetime, '%Y-%m-%d %H:%M:%S')
print(type(currdate)) # <class 'datetime.datetime'>
이런 식으로 사용할 수 있다.
그 외 예시
t_time = dt_object.strftime('%m월 %d일 %H시 %M분') # 결과값 시간
chk_time = dt_object.strftime('%Y-%m-%d %H:%M:%S') # 입력값 시간