Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapa Zon Waktu `Asia/Hong_Kong` Pytz Menunjukkan Offset Tidak Konsisten?

Mengapa Zon Waktu `Asia/Hong_Kong` Pytz Menunjukkan Offset Tidak Konsisten?

Linda Hamilton
Linda Hamiltonasal
2024-12-06 15:56:101059semak imbas

Why Does Pytz's `Asia/Hong_Kong` Timezone Show Inconsistent Offsets?

Anomali Tarikh dengan Zon Waktu Pytz

Pytz, perpustakaan Python yang lazim untuk mengendalikan zon waktu, kadangkala menunjukkan gelagat ofset yang luar biasa. Terutama, apabila meminta zon waktu 'Asia/Hong_Kong', pytz mungkin mengembalikan offset 7:37:00, yang kelihatan tidak konsisten.

Untuk menggambarkan, pertimbangkan kod berikut:

import pytz
pytz.timezone('Asia/Hong_Kong')

Output menunjukkan maklumat zon waktu sebagai:

<DstTzInfo 'Asia/Hong_Kong' LMT+7:37:00 STD>

Secara tidak konsisten, menggunakan kaedah penyetempatan untuk melampirkan zon waktu Hong Kong pada contoh datetime menghasilkan hasil yang berbeza:

hk = pytz.timezone('Asia/Hong_Kong')
hk_dt = hk.localize(datetime(2012, 1, 1))

Membandingkan tarikh masa yang didedahkan:

dt1 = datetime(2012,1,1,tzinfo=hk)
if dt1 > hk_dt:
    print "Why?"

Tanpa diduga, dt1 dinilai sebagai lebih besar daripada hk_dt.

Penjelasan

Anomali ini timbul akibat perubahan dalam zon waktu dan offset dari semasa ke semasa. Pytz memberikan nama tertua yang tersedia dan mengimbangi setiap objek zon waktu yang diciptanya. Walau bagaimanapun, apabila menggunakan kaedah penyetempatan untuk melampirkan zon pada tarikh, ia menggabungkan nama yang tepat dan mengimbangi sepadan dengan masa yang ditentukan.

Kesimpulannya, hanya menggunakan pembina datetime untuk menetapkan zon waktu pada tarikh menghalang ia daripada melaraskan dengan betul, membawa kepada ketidakkonsistenan yang diperhatikan.

Atas ialah kandungan terperinci Mengapa Zon Waktu `Asia/Hong_Kong` Pytz Menunjukkan Offset Tidak Konsisten?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn