Apabila bekerja dengan masa tarikh, selalunya perlu menukar antara zon waktu yang berbeza, terutamanya apabila mendapatkan semula dan memaparkan data yang berterusan. Artikel ini menunjukkan cara menukar waktu tarikh UTC kepada masa tarikh tempatan hanya menggunakan perpustakaan standard Python, menawarkan berbilang penyelesaian untuk Python 2 dan 3.
Untuk menukar waktu tarikh UTC kepada tarikh masa tempatan, kita perlu mengetahui zon waktu tempatan lalai. Malangnya, Python tidak menyediakan kaedah yang mudah untuk mendapatkan maklumat ini. Walau bagaimanapun, kita boleh mencipta dan menggunakan objek zon waktu untuk mewakilinya.
Dalam Python 3.3 , kita boleh menggunakan kaedah datetime.astimezone(tz) untuk menukar datetime ke zon waktu tempatan. Walau bagaimanapun, kita masih perlu mendapatkan zon waktu tempatan lalai, yang boleh kita capai menggunakan zon waktu.utc.
<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>
Dalam Python 2/3, di mana datetime.astimezone () tidak tersedia, kita boleh menggunakan pendekatan berikut:
<code class="python">import calendar from datetime import datetime, timedelta def utc_to_local(utc_dt): # get integer timestamp to avoid precision lost 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>
Berikut ialah contoh penggunaan fungsi utc_to_local() dengan fungsi pemformatan tersuai:
<code class="python">from datetime import datetime def aslocaltimestr(utc_dt): return utc_to_local(utc_dt).strftime('%Y-%m-%d %H:%M:%S.%f %Z%z') utc_dt1 = datetime(2010, 6, 6, 17, 29, 7, 730000) utc_dt2 = datetime(2010, 12, 6, 17, 29, 7, 730000) utc_dt3 = datetime.utcnow() print(aslocaltimestr(utc_dt1)) print(aslocaltimestr(utc_dt2)) print(aslocaltimestr(utc_dt3))</code>
Menukar tarikh tarikh UTC kepada masa tarikh tempatan menggunakan hanya perpustakaan standard dalam Python melibatkan sama ada mencipta objek zon waktu atau menggunakan pendekatan yang lebih rumit yang melibatkan operasi kalendar dan masa tarikh. Walaupun menggunakan pytz atau tzlocal adalah lebih mudah, penyelesaian ini menunjukkan fleksibiliti perpustakaan standard Python untuk mengendalikan penukaran masa tarikh tanpa kebergantungan luaran.
Atas ialah kandungan terperinci Bagaimana untuk Menukar UTC Datetime ke Zon Waktu Setempat Menggunakan Perpustakaan Standard Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!