Python에서는 datetime 모듈을 사용하여 날짜와 시간 객체를 UTC 타임스탬프로 손쉽게 변환할 수 있습니다. 이미 UTC 기준의 datetime 객체를 가지고 있다면 timestamp() 메서드를 호출하기만 하면 됩니다. 이 메서드는 해당 datetime 객체가 에포크(epoch, 1970년 1월 1일 00:00:00 UTC)로부터 경과한 시간을 초 단위로 반환합니다.
UTC 시간대를 지정하여 변환하기
만약 datetime 객체가 로컬 시간대로 되어 있다면, 먼저 시간대 정보를 UTC로 교체한 뒤 타임스탬프를 구해야 합니다. 아래 예제를 살펴보겠습니다.
예제
from datetime import datetime, timezone
dt = datetime(2015, 10, 19)
timestamp = dt.replace(tzinfo=timezone.utc).timestamp()
print(timestamp)
출력 결과
1445212800.0
위 코드에서는 replace(tzinfo=timezone.utc)를 통해 나이브(naive) datetime 객체에 UTC 시간대 정보를 명시적으로 부여한 후, timestamp() 메서드로 변환했습니다. 시간대 정보가 없는 상태에서 호출하면 운영체제의 로컬 시간대를 기준으로 해석되므로 주의해야 합니다.
Python 2 환경에서 변환하기
Python 2에는 timestamp() 메서드가 없기 때문에, 대신 total_seconds() 함수를 활용할 수 있습니다. 기준이 되는 에포크 시간(1970년 1월 1일)을 직접 빼서 경과 시간을 초 단위로 계산하는 방식입니다.
예제
from datetime import datetime
dt = datetime(2015, 10, 19)
timestamp = (dt - datetime(1970, 1, 1)).total_seconds()
print(timestamp)
출력 결과
1445212800.0
두 방법 모두 동일한 결과인 1445212800.0을 반환합니다. 이 값은 2015년 10월 19일 00시 00분 00초 UTC가 에포크로부터 정확히 몇 초 후인지를 나타냅니다. 최신 Python 3 환경에서는 첫 번째 방법(timezone.utc 사용)이 시간대 처리 측면에서 더 안전하고 권장되는 접근 방식입니다.