본문 바로가기
카테고리 없음

파이썬 zoneinfo 소개

by python pro 2023. 2. 22.
반응형

"Python zoneinfo"은 Python의 datetime 모듈에서 지역 정보를 나타내는 클래스입니다. 현재 시간대와 관련된 정보를 포함하고 있습니다.

zoneinfo 모듈은 tzfile(5) 형식의 타임존 데이터를 읽어와, 각각의 시간대에 대한 정보를 포함하고 있습니다. 이는 리눅스에서 제공하는 표준 타임존 데이터와 같은 타임존 데이터를 사용할 수 있게 합니다.

 

zoneinfo 모듈을 사용하여 타임존을 얻는 방법은 다음과 같습니다

import zoneinfo

timezone = zoneinfo.ZoneInfo('Asia/Seoul')
print(timezone)

위의 코드는 'Asia/Seoul' 타임존을 얻어서 출력합니다.

 

zoneinfo 모듈은 구식 방식의 time 모듈과는 달리, tzfile(5) 형식의 타임존 데이터를 읽어와, 훨씬 더 정확한 타임존 정보를 제공합니다. 따라서, 구식 방식의 time 모듈보다는 zoneinfo 모듈을 사용하는 것이 좋습니다.

 

zoneinfo는 여러 가지 내장 함수를 가지고 있습니다. 아래에 몇 개 간단하게 소개해드립니다.

 

zoneinfo.available_timezones() 은 파이썬의 "zoneinfo" 모듈에서 사용 가능한 시간대 목록을 반환하는 함수입니다.

import zoneinfo

print(zoneinfo.available_timezones)

# ["Africa/Abidjan", "Africa/Accra", "Africa/Addis_Ababa", ... "Pacific/Tongatapu", "Pacific/Wake", "Pacific/Wallis"]

 

zoneinfo.reset_tzpath() 함수는 타임존 정보의 경로를 다시 설정할 때 사용합니다.

import zoneinfo

# 현재 타임존 경로 확인
print(zoneinfo.TZDIR)

# 타임존 경로 재설정
zoneinfo.reset_tzpath('/new/path/to/timezones')

# 재설정된 타임존 경로 확인
print(zoneinfo.TZDIR)

 

zoneinfo.TZPATH 는 Python에서 타임존 정보를 저장하는 디렉토리의 경로를 가리키는 상수입니다

기본적으로 TZPATH에 저장된 디렉토리에는 타임존 정보가 담겨있는 파일들이 있습니다. Python에서의 datetime 모듈이 타임존 정보를 가져오는데 이를 사용합니다.

 

TZPATH는 다음과 같이 접근할 수 있습니다.

import zoneinfo
print(zoneinfo.TZPATH)

TZPATH의 경로를 변경하고 싶을 때에는 zoneinfo.reset_tzpath() 함수를 사용할 수 있습니다.

import zoneinfo

# TZPATH 경로 변경
new_tzpath = '/usr/share/zoneinfo'
zoneinfo.reset_tzpath(new_tzpath)

# TZPATH 경로 확인
print(zoneinfo.TZPATH)

 

zoneinfo.ZoneInfo(key) 는 Python의 "zoneinfo" 모듈에서 타임존 정보를 관리하는 클래스입니다. key는 타임존의 식별자입니다.

import zoneinfo

# key는 타임존의 식별자입니다.
timezone = zoneinfo.ZoneInfo("Asia/Seoul")

위 예시에서 "Asia/Seoul"은 한국 타임존의 식별자입니다. 식별자는 IANA Time Zone Database에서 관리되며, 타임존 목록은 zoneinfo.available_timezones() 메소드를 통해 확인할 수 있습니다.

 

 

zoneinfo.no_cache 는 zoneinfo 모듈의 함수로, 시간대 정보 캐시 정책을 수정할 수 있게 해줍니다.

이 함수를 사용하면, 시간대 정보 캐시를 비활성화할 수 있습니다. 캐시를 비활성화하면, 매번 접근할 때마다 파일 시스템에서 시간대 정보를 불러옵니다.

import zoneinfo

# cache 기능 비활성화
zoneinfo.no_cache('UTC')

# cache 기능 활성화
zoneinfo.no_cache(None)
반응형

댓글