Percanggahan Zon Masa dengan pytz
Zon waktu tertentu mempamerkan offset yang pelik apabila pada mulanya diperoleh daripada pytz. Sebagai contoh, Asia/Hong_Kong pada mulanya menunjukkan offset tujuh jam 37 minit:
<br>import pytz<br>pytz.timezone('Asia/Hong_Kong')<br><DstTzInfo 'Asia/Hong_Kong' LMT 7:37:00 STD><br>
Sumber Percanggahan
Zon masa dan offset turun naik sepanjang sejarah. Nama zon waktu lalai dan ofset yang disediakan oleh pytz mewakili yang terawal tersedia untuk zon itu, yang mungkin kelihatan luar biasa.
Apabila menggunakan penyetempatan untuk menetapkan zon waktu pada tarikh, nama zon waktu dan ofset yang sesuai ialah digunakan. Walau bagaimanapun, secara langsung menggunakan pembina datetime untuk menetapkan zon waktu tidak membenarkan pelarasan yang betul.
Contoh
Pertimbangkan kod berikut:
< ;pra>
import pytz
dari tarikh import datetime
hk = pytz.timezone('Asia/Hong_Kong')
dt1 = datetime(2012,1,1,tzinfo=hk)
dt2 = hk.localize(datetime(2012,1,1))
jika dt1 > dt2:
cetak "Kenapa?"
Dalam contoh ini, dt1 akan lebih besar daripada dt2 disebabkan percanggahan offset awal. Dengan menggunakan localize, dt2 memperoleh offset yang tepat, menghasilkan perbandingan logik antara kedua-dua tarikh.
Atas ialah kandungan terperinci Mengapakah pytz Menunjukkan Offset Zon Waktu Tidak Dijangka pada mulanya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!