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

Python에서 다른 시간대의 시간을 비교하는 방법

Python에서 서로 다른 시간대(timezone)를 가진 두 개의 datetime 객체를 비교해야 하는 경우가 종종 있습니다. 이때 가장 먼저 이해해야 할 개념이 바로 aware(시간대 인식형) 객체와 naive(시간대 비인식형) 객체의 차이입니다.

aware 객체와 naive 객체의 차이

aware datetime 객체는 객체 자체에 시간대(timezone) 정보를 함께 담고 있는 객체입니다. 반면 naive 객체는 어떠한 시간대 정보도 포함하지 않기 때문에, 그 시각이 어느 지역 기준인지 알 수 없습니다.

두 aware 객체가 동일한 시점을 나타내는지 확인하는 가장 간단한 방법은 비교 연산자(==)로 직접 비교하는 것입니다. Python은 내부적으로 두 객체를 UTC 기준으로 환산하여 비교하므로, 화면에 표시되는 지역 시각이 달라도 실제 시점이 같다면 True를 반환합니다.

예제 코드

아래 예제는 pytz 라이브러리를 사용하여 UTC 시간을 중부 유럽 시간(CET)으로 변환한 뒤, 두 시각이 같은지 비교합니다. (pytz가 설치되어 있지 않다면 pip install pytz로 설치할 수 있습니다.)

import datetime, pytz

local_tz = pytz.timezone('CET')

# UTC 기준 현재 시간 가져오기
utc = datetime.datetime.now(pytz.utc)

# UTC 시간을 현지 시간대(CET)로 변환
local = utc.astimezone(local_tz)

print("UTC:", utc)
print("Local:", local)
print(utc == local)

실행 결과

위 코드를 실행하면 다음과 같은 출력을 얻을 수 있습니다.

UTC:   2018-01-03 17:02:43.632805+00:00
Local: 2018-01-03 18:02:43.632805+01:00
True

출력 결과를 보면 UTC와 CET의 시각 표시는 1시간 차이가 나지만, 두 객체는 실제로 동일한 순간을 나타내므로 비교 결과는 True입니다. 이처럼 시간대 정보를 가진 aware 객체끼리는 변환 과정 없이 곧바로 비교할 수 있으며, 이것이 aware 객체를 사용하는 가장 큰 장점 중 하나입니다.