Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python에서 datetime 객체를 UTC 타임스탬프로 변환하는 방법

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 기준이므로, 서버나 데이터베이스에 저장할 때 시간대 혼동을 피할 수 있다는 장점도 있습니다.