Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menukar UTC Datetime ke Zon Waktu Setempat Menggunakan Perpustakaan Standard Python?

Bagaimana untuk Menukar UTC Datetime ke Zon Waktu Setempat Menggunakan Perpustakaan Standard Python?

Susan Sarandon
Susan Sarandonasal
2024-11-01 14:20:29676semak imbas

How to Convert UTC Datetime to Local Timezone Using Python's Standard Library?

Tukar Waktu Tarikh UTC kepada Zon Waktu Setempat Menggunakan Pustaka Standard

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.

Zon Waktu Setempat Lalai

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.

Menggunakan datetime.astimezone()

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>

Menggunakan kalendar dan datetime

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>

Contoh Penggunaan

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>

Kesimpulan

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn