Dalam Python, kaedah 'strftime' biasanya digunakan untuk menukar objek datetime kepada rentetan yang mewakili format tarikh dan masa tertentu. Walau bagaimanapun, apabila menukar kepada masa zaman menggunakan '%s', adalah penting untuk mengetahui potensi percanggahan zon waktu.
Seperti yang anda perhatikan, menggunakan 'strftime('%s')' pada objek datetime menghasilkan nilai yang berbeza daripada masa zaman sebenar dalam UTC sebanyak satu jam. Ini kerana 'strftime' secara lalai menggunakan zon waktu tempatan sistem, yang boleh memperkenalkan offset daripada UTC.
Untuk mengatasi isu zon waktu ini, anda boleh menggunakan ' kaedah timestamp()', yang diperkenalkan dalam Python 3.3. 'timestamp()' mengembalikan masa zaman dalam beberapa saat, tanpa mengambil kira zon waktu sistem.
>>> datetime.datetime(2012, 4, 1, 0, 0).timestamp() 1333234800.0
Untuk versi Python sebelum 3.3, anda boleh mengira masa zaman secara manual:
>>> (datetime.datetime(2012, 4, 1, 0, 0) - datetime.datetime(1970, 1, 1)).total_seconds() 1333238400.0
Ia adalah penting untuk mengelak daripada menggunakan 'strftime('%s')' untuk penukaran zaman kerana Python tidak menyokong format ini. Fungsinya bergantung pada menghantar input kepada pelaksanaan 'strftime' sistem, yang mungkin menggunakan zon waktu setempat dan memperkenalkan ralat.
Sebagai kesimpulan, adalah disyorkan untuk menggunakan kaedah 'timestamp()' dalam Python 3.3 atau pengiraan manual untuk versi terdahulu untuk mendapatkan penukaran masa zaman yang tepat dalam UTC. Dengan mematuhi amalan ini, anda boleh memastikan hasil yang konsisten dan boleh dipercayai, tanpa mengira konfigurasi zon waktu sistem.
Atas ialah kandungan terperinci Mengapakah `strftime('%s')` Menghasilkan Masa Epoch yang Tidak Tepat dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!