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!