ホームページ > バックエンド開発 > Python チュートリアル > pytz がアジア/香港に 7 時間 37 分のオフセットを割り当てるのはなぜですか?

pytz がアジア/香港に 7 時間 37 分のオフセットを割り当てるのはなぜですか?

Susan Sarandon
リリース: 2024-12-07 20:17:15
オリジナル
234 人が閲覧しました

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

Pytz タイムゾーンの謎: 7 時間オフセットの謎を解明する

タイムゾーン処理の分野では、pytz が主導権を握ることがよくあります。ただし、一部のユーザーは、「アジア/香港」タイムゾーンを使用しているときに予期しない異常に遭遇しました。なぜ 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) でした。 。ただし、このオフセットはその後変更されました。 datetime オブジェクトをタイムゾーン情報 (dt1) で初期化するだけでは、自動調整はできません。

異常な動作の解決:

この不一致を解決するには、次のことが推奨されます。 localize メソッドを使用してタイムゾーン情報を日時オブジェクトに正しく割り当てます。 localize を明示的に使用することで、pytz は現在のタイムキーピング規則を反映して、適切なタイムゾーン名とオフセットを確実に使用できるようにします。

以上がpytz がアジア/香港に 7 時間 37 分のオフセットを割り当てるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート