개요
작업을 하다 보면 datetime 또는 timestamp를 자주 사용하게 된다. 주로 사용하는 자료형은 사람이 읽기 쉬운 datetime이지만, 결괏값이 timestamp인 경우에는 형변환이 필요하다.
이 글에서는 datetime에서 timestamp를, timestamp에서 datetime을 얻는 방법을 정리해둔다.
timestamp -> datetime
timestamp로부터 datetime을 얻을 때는 datetime 모듈의 fromtimestamp 함수를 사용한다.
from time import time
from datetime import datetime
current_timestamp = time()
print(current_timestamp)
print(datetime.fromtimestamp(current_timestamp))
매개변수 tz로 timezone을 지정할 수도 있다.
아래 예시의 컴퓨터 시간은 서울 기준으로, utc 기준으로 변환하면 15시가 아니라 6시로 변환된다. 기본값은 컴퓨터가 사용하는 timezone이다.
from time import time
from datetime import datetime
from dateutil import tz
current_timestamp = time()
print(current_timestamp)
print(datetime.fromtimestamp(current_timestamp))
print(datetime.fromtimestamp(current_timestamp, tz=tz.tzutc()))
datetime -> timestamp
datetime.timestamp는 datetime 객체에 해당하는 timestamp를 반환한다. 반환값은 float 형이다.
from datetime import datetime
current_datetime = datetime.now()
print(current_datetime)
print(current_datetime.timestamp())
datetime에서 timestamp를 얻는 방법에 대해 구글링했을 때 많은 글이 time.mktime과 datetime.timetuple을 사용하는데, 이 방법은 마이크로 초가 버려진다. 만약 마이크로 초까지 고려해야 하는 경우라면 해당 방법은 적절하지 않을 것 같다.
참고 문서
https://docs.python.org/ko/3/library/datetime.html#datetime.datetime.fromtimestamp
https://docs.python.org/ko/3/library/datetime.html#datetime.datetime.timestamp