Python에서는 datetime 모듈을 활용해 날짜·시간(datetime) 객체를 UTC 타임스탬프로 손쉽게 변환할 수 있습니다. 이미 datetime 객체가 UTC 기준으로 생성되어 있다면 timestamp() 메서드를 호출하기만 하면 됩니다. 이 메서드는 해당 datetime 객체가 에포크(epoch, 1970년 1월 1일 00:00:00 UTC)로부터 얼마나 지났는지를 초 단위의 부동소수점 값으로 반환합니다.
UTC 타임존 정보를 추가한 후 변환하기
만약 datetime 객체에 타임존 정보가 없거나 로컬 시간대 기준이라면, 먼저 replace() 메서드로 타임존 정보를 UTC로 교체한 뒤 타임스탬프를 구해야 합니다. 그렇지 않으면 시스템의 로컬 시간대가 기준으로 적용되어 잘못된 값이 나올 수 있습니다.
예제 코드
from datetime import datetime, timezone
dt = datetime(2015, 10, 19)
timestamp = dt.replace(tzinfo=timezone.utc).timestamp()
print(timestamp)
실행 결과
1445212800.0
Python 2 환경에서의 대안 방법
Python 2에는 timestamp() 메서드가 없기 때문에, 에포크 시점인 1970년 1월 1일을 직접 빼고 total_seconds() 함수로 총 초 단위 값을 계산하는 방식을 사용해야 합니다. 이 방법은 Python 3에서도 동일하게 작동하므로 버전에 관계없이 활용할 수 있는 범용적인 접근 방식입니다.
예제 코드
from datetime import datetime
dt = datetime(2015, 10, 19)
timestamp = (dt - datetime(1970, 1, 1)).total_seconds()
print(timestamp)
실행 결과
1445212800.0
정리
두 방법 모두 동일한 결과인 1445212800.0을 반환합니다. Python 3 이상을 사용한다면 timezone.utc와 함께 timestamp() 메서드를 사용하는 것이 가장 간결하고 안전한 방법이며, 레거시 환경에서는 에포크 차감 방식을 활용하면 됩니다. 참고로 결과값은 항상 UTC 기준이므로, 서버나 데이터베이스에 저장할 때 시간대 혼동을 피할 수 있다는 장점도 있습니다.