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

Python에서 컴퓨터의 UTC 오프셋(시간대 오프셋) 구하는 방법

컴퓨터의 UTC 오프셋이란 현재 컴퓨터에 설정된 시간대(timezone)를 의미합니다. Python에서는 기본 제공되는 time 모듈을 사용하면 이 시간대 정보를 손쉽게 확인할 수 있습니다. time.timezone 속성은 UTC 오프셋을 초 단위로 반환합니다.

time 모듈 사용 예제

import time
print(-time.timezone) # 인도 시간대: +5:30

실행 결과

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

19800

인도의 시간대가 UTC+5:30이므로, 이를 초 단위로 환산하면 5 × 3600 + 30 × 60 = 19800초가 됩니다. 참고로 time.timezone은 서반구 시간대의 경우 양수, 동반구 시간대의 경우 음수 값을 반환하기 때문에 일반적으로 앞에 마이너스(-)를 붙여 사용합니다.

datetime 모듈을 활용한 대체 방법

time.timezone 외에도 다른 방법으로 시간대 정보를 구할 수 있습니다. UTC 기준 datetime 객체와 로컬 시간대 datetime 객체를 각각 생성한 뒤, 두 값의 차이를 계산하면 시간대 오프셋을 얻을 수 있습니다.

import time
from datetime import datetime

ts = time.time()
utc_offset = (datetime.fromtimestamp(ts) -
             datetime.utcfromtimestamp(ts)).total_seconds()

print(utc_offset)

실행 결과

19800.0

이 방법은 datetime.fromtimestamp()로 생성한 로컬 시간 객체에서 datetime.utcfromtimestamp()로 생성한 UTC 시간 객체를 빼고, total_seconds() 메서드로 그 차이를 초 단위로 변환하는 원리입니다.

정리

  • time.timezone: 가장 간단한 방법으로, UTC 오프셋을 초 단위로 즉시 반환합니다.
  • datetime 차이 계산: UTC와 로컬 시간 객체의 차이를 직접 계산하는 방식으로, 더 유연하게 활용할 수 있습니다.

두 방법 모두 동일한 결과를 제공하므로, 상황에 맞게 선택하여 사용하면 됩니다. 더 정교한 시간대 처리가 필요하다면 서드파티 라이브러리인 pytz나 Python 3.9부터 기본 제공되는 zoneinfo 모듈을 활용하는 것도 좋은 선택입니다.