> 백엔드 개발 > 파이썬 튜토리얼 > pytz가 Asia/Hong_Kong에 7시간, 37분 오프셋을 할당하는 이유는 무엇입니까?

pytz가 Asia/Hong_Kong에 7시간, 37분 오프셋을 할당하는 이유는 무엇입니까?

Susan Sarandon
풀어 주다: 2024-12-07 20:17:15
원래의
236명이 탐색했습니다.

Why Does pytz Assign a 7-Hour, 37-Minute Offset to Asia/Hong_Kong?

Pytz 시간대 수수께끼: 7시간 오프셋 미스터리 풀기

시간대 처리 영역에서는 pytz가 앞장서는 경우가 많습니다. 그러나 일부 사용자는 'Asia/Hong_Kong' 시간대를 사용하여 작업할 때 예상치 못한 예외 현상을 경험했습니다. pytz가 여기에 비정상적인 7시간 37분 오프셋을 할당하는 이유는 무엇입니까?

추가 조사를 통해 흥미로운 관찰 결과가 드러났습니다.

import pytz
pytz.timezone('Asia/Hong_Kong')
# Outputs: <DstTzInfo 'Asia/Hong_Kong' LMT+7:37:00 STD>
로그인 후 복사

이상하게도 이 오프셋은 정확하지 않은 것 같습니다. 그러나 다음 코드 조각은 더 복잡한 불일치를 드러냅니다.

import pytz
from datetime import datetime
hk = pytz.timezone('Asia/Hong_Kong')

dt1 = datetime(2012,1,1,tzinfo=hk)
dt2 = hk.localize(datetime(2012,1,1))
if dt1 > dt2:
   print "Why?"
로그인 후 복사

이 코드는 놀랍게도 "Why?"를 인쇄하여 dt1이 dt2보다 크다는 것을 암시합니다. 이러한 특이한 행동의 근본 원인은 무엇일까요?

수수께끼의 해독: 역사적 반전

이 시간대 수수께끼를 풀려면 시간대 역사에 대한 세심한 조사가 필요합니다. pytz에서 추출한 기본 시간대 및 오프셋은 알려진 가장 오래된 레코드를 기반으로 하며 때로는 현재 표준에서 벗어날 수 있습니다. Localize를 통해 현지화하면 적절한 시간대 이름과 오프셋이 적절하게 할당됩니다.

'Asia/Hong_Kong'의 경우 가장 먼저 기록된 오프셋은 실제로 7시간 37분(LMT 7:37:00)입니다. . 그러나 이 오프셋은 이후 수정되었습니다. 단순히 시간대 정보(dt1)로 날짜/시간 객체를 초기화하는 것만으로는 자동 조정이 허용되지 않습니다.

비정상적인 동작 해결:

이 불일치를 해결하려면 다음을 권장합니다. 시간대 정보를 datetime 객체에 올바르게 할당하기 위해 localize 메서드를 사용합니다. 명시적으로 지역화를 사용함으로써 pytz는 현재 시간 관리 규칙을 반영하여 적절한 시간대 이름과 오프셋의 활용을 보장합니다.

위 내용은 pytz가 Asia/Hong_Kong에 7시간, 37분 오프셋을 할당하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿