Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Menukar Datetime UTC kepada Datetime Tempatan dalam Python Menggunakan Perpustakaan Standard?
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.
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?
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>
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>
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>
<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>
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
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!