Pytz タイムゾーンの日時の異常
タイムゾーンを処理するための一般的な Python ライブラリである Pytz は、異常なオフセット動作を示すことがあります。特に、「Asia/Hong_Kong」タイムゾーンをリクエストすると、pytz は 7:37:00 のオフセットを返す可能性があり、これは矛盾しているように見えます。
説明のために、次のコードを考えてみましょう。
import pytz pytz.timezone('Asia/Hong_Kong')
出力にはタイムゾーン情報が次のように表示されます:
<DstTzInfo 'Asia/Hong_Kong' LMT+7:37:00 STD>
一貫性がなく、香港のタイムゾーンを datetime インスタンスに付加する localize メソッドは、異なる結果をもたらします:
hk = pytz.timezone('Asia/Hong_Kong') hk_dt = hk.localize(datetime(2012, 1, 1))
datetime を比較すると、次のことが明らかになります:
dt1 = datetime(2012,1,1,tzinfo=hk) if dt1 > hk_dt: print "Why?"
予期せず、dt1 は次よりも大きいと評価されます。 hk_dt.
説明
この異常は、時間の経過に伴うタイム ゾーンとオフセットの変化によって発生します。 Pytz は、作成する各タイムゾーン オブジェクトに、使用可能な最も古い名前とオフセットを割り当てます。ただし、localize メソッドを使用してゾーンを日付に付加する場合、指定された時刻に対応する正確な名前とオフセットが組み込まれます。
結論として、単純に datetime コンストラクターを使用して日付にタイムゾーンを割り当てることはできません。正しく調整できず、不一致が観察されます。
以上がPytz の「アジア/香港」タイムゾーンが一貫性のないオフセットを示すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。