Bagaimana untuk Menukar Datetime UTC kepada Datetime Tempatan dalam Python Menggunakan Perpustakaan Standard?

Linda Hamilton
Lepaskan: 2024-11-02 03:43:30
asal
1008 orang telah melayarinya

How to Convert a UTC Datetime to a Local Datetime in Python Using the Standard Library?

Menukar Waktu Tarikh UTC kepada Masa Tarikh Setempat Menggunakan Pustaka Standard Python

Dalam pengaturcaraan, selalunya perlu menukar waktu tarikh antara zon waktu yang berbeza. Pustaka Python standard menyediakan fungsi terhad untuk ini, tetapi adalah mungkin untuk mencapai penukaran asas tanpa kebergantungan luaran.

Masalah

Memandangkan contoh datetime UTC dibuat dengan datetime.utcnow(), bagaimana bolehkah kita menukarnya kepada contoh datetime tempatan, hanya menggunakan perpustakaan standard Python? Selain itu, bagaimanakah kita boleh mendapatkan zon waktu tempatan lalai?

Penyelesaian

Python 3.3 :

<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>
Salin selepas log masuk

Python 2/3 ( menggunakan cap masa integer):

<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)
    return local_dt.replace(microsecond=utc_dt.microsecond)</code>
Salin selepas log masuk

Menggunakan pytz (Pilihan)**

Python 2/3 (dengan pergantungan pytz):

<code class="python">import pytz

local_tz = pytz.timezone('Europe/Moscow') # use local timezone name here

def utc_to_local(utc_dt):
    local_dt = utc_dt.replace(tzinfo=pytz.utc).astimezone(local_tz)
    return local_tz.normalize(local_dt)</code>
Salin selepas log masuk

Contoh

<code class="python">def aslocaltimestr(utc_dt):
    return utc_to_local(utc_dt).strftime('%Y-%m-%d %H:%M:%S.%f %Z%z')

print(aslocaltimestr(datetime(2010,  6, 6, 17, 29, 7, 730000)))
print(aslocaltimestr(datetime(2010, 12, 6, 17, 29, 7, 730000)))
print(aslocaltimestr(datetime.utcnow()))</code>
Salin selepas log masuk

Output

2010-06-06 21:29:07.730000 MSD+0400
2010-12-06 20:29:07.730000 MSK+0300
2012-11-08 14:19:50.093745 MSK+0400
Salin selepas log masuk

Nota

  • Penyelesaian bukan pytz mungkin tidak berfungsi pada Windows.
  • Contoh yang diberikan mengambil kira Waktu Penjimatan Siang dan perubahan offset UTC terbaru untuk zon waktu MSK.

Atas ialah kandungan terperinci Bagaimana untuk Menukar Datetime UTC kepada Datetime Tempatan dalam Python Menggunakan Perpustakaan Standard?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan