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

strftime을 사용해 Python datetime을 epoch 타임스탬프로 변환하는 방법

datetime 객체를 epoch로 변환하기

Python에서 datetime 객체를 epoch(1970년 1월 1일 00:00:00 UTC부터 경과한 초) 값으로 변환하려면 strftime 함수에 날짜를 초 단위로 출력하는 포맷 코드를 담은 형식 문자열을 전달해야 합니다. 이때 사용되는 것이 %s 지시자입니다.

예제

import datetime
timestamp = datetime.datetime(2017, 12, 1, 0, 0).strftime('%s')
print(timestamp)

출력 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

1512086400

다만 %s는 Python 공식 문서에 명시된 표준 지시자가 아니며, 운영체제나 플랫폼에 따라 정상적으로 동작하지 않을 수 있습니다(예: Windows 환경). 따라서 실무에서는 아래에서 소개하는 timestamp() 메서드를 사용하는 것이 더 안전하고 권장되는 방식입니다.

Python 3.3 이상에서 timestamp() 메서드 사용하기

Python 3.3 이상 버전을 사용 중이라면 별도의 형식 문자열 없이 timestamp() 함수만으로 간단하게 epoch 시간을 얻을 수 있습니다.

예제

import datetime
timestamp = datetime.datetime(2017, 12, 1, 0, 0).timestamp()
print(timestamp)

출력 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

1512086400.0

timestamp() 메서드는 float 형태의 값을 반환한다는 점에 유의하세요.

참고 사항

tzinfo가 없는 naive datetime 객체의 경우, timestamp()는 시스템의 로컬 시간대를 기준으로 값을 계산합니다. 따라서 실행 환경의 시간대 설정에 따라 결과가 달라질 수 있으며, UTC 기준의 일관된 결과가 필요하다면 다음과 같이 tzinfo를 명시적으로 지정하는 것이 좋습니다.

import datetime
dt = datetime.datetime(2017, 12, 1, 0, 0, tzinfo=datetime.timezone.utc)
print(dt.timestamp()) # 1512086400.0