Menukar Datetime UTC ke Local Datetime Menggunakan Python Standard Library
Apabila berurusan dengan objek datetime, selalunya perlu menukar antara UTC (Coordinated Waktu Sejagat) dan waktu tempatan. Pustaka standard Python menyediakan fungsi terbina dalam untuk mencapai ini.
Alternatif pytz untuk Python 3.3
Dalam Python 3.3 dan ke atas, modul zon waktu memudahkan proses penukaran:
<code class="python">from datetime import datetime, timezone def utc_to_local(utc_dt): return utc_dt.replace(tzinfo=timezone.utc).astimezone(tz=None)</code>
Penyelesaian untuk Python 2/3
Untuk Python 2 dan 3, pendekatan alternatif ialah menggunakan calendar.timegm dan datetime.fromtimestamp:
<code class="python">import calendar from datetime import datetime, timedelta def utc_to_local(utc_dt): timestamp = calendar.timegm(utc_dt.timetuple()) local_dt = datetime.fromtimestamp(timestamp) assert utc_dt.resolution >= timedelta(microseconds=1) return local_dt.replace(microsecond=utc_dt.microsecond)</code>
Contoh Penggunaan
Untuk menggambarkan penukaran, pertimbangkan contoh berikut:
<code class="python">from datetime import datetime utc_dt = datetime(2023, 7, 18, 12, 0, 0, tzinfo=timezone.utc) local_dt = utc_to_local(utc_dt) print(local_dt)</code>
Output:
2023-07-18 18:00:00.000000+06:00
Nota untuk DateTime tanpa Resolusi Mikrosaat
Dalam kes di mana waktu tarikh UTC tidak mempunyai resolusi mikrosaat, kaedah zon masa mungkin memperkenalkan nilai mikrosaat yang tidak terdapat dalam waktu tarikh asal. Untuk memastikan ketepatan, gunakan kaedah alternatif yang disediakan untuk Python 2/3.
Mengendalikan Perubahan DST
Kedua-dua penyelesaian mengambil kira perubahan waktu penjimatan siang (DST) dan dengan betul tukar waktu tarikh UTC kepada waktu tempatan yang sesuai dengan DST digunakan atau dialih keluar mengikut keperluan.
Atas ialah kandungan terperinci Bagaimana untuk Menukar UTC Datetime ke Local Datetime Menggunakan Python Standard Library?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!