Wie konvertiere ich mithilfe der Standardbibliothek eine UTC-Datumszeit in eine lokale Datumszeit in Python?

Linda Hamilton
Freigeben: 2024-11-02 03:43:30
Original
937 Leute haben es durchsucht

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

UTC-Datumszeit in lokale Datumszeit mithilfe der Python-Standardbibliothek konvertieren

Bei der Programmierung ist es häufig erforderlich, Datums- und Uhrzeitangaben zwischen verschiedenen Zeitzonen zu konvertieren. Die Standard-Python-Bibliothek bietet hierfür eine begrenzte Funktionalität, es ist jedoch möglich, eine grundlegende Konvertierung ohne externe Abhängigkeiten zu erreichen.

Problem

Angenommen, eine UTC-Datetime-Instanz wurde mit datetime.utcnow() erstellt, wie Können wir es in eine lokale Datetime-Instanz konvertieren und dabei nur die Python-Standardbibliothek verwenden? Wie erhalten wir außerdem die standardmäßige lokale Zeitzone?

Lösung

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>
Nach dem Login kopieren

Python 2/3 ( unter Verwendung eines ganzzahligen Zeitstempels):

<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>
Nach dem Login kopieren

Verwendung von Pytz (optional)**

Python 2/3 (mit Pytz-Abhängigkeit):

<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>
Nach dem Login kopieren

Beispiel

<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>
Nach dem Login kopieren

Ausgabe

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
Nach dem Login kopieren

Hinweise

  • Nicht-Pytz-Lösungen funktionieren möglicherweise nicht unter Windows.
  • Die bereitgestellten Beispiele berücksichtigen die Sommerzeit und die jüngsten UTC-Offset-Änderungen für die MSK-Zeitzone.

Das obige ist der detaillierte Inhalt vonWie konvertiere ich mithilfe der Standardbibliothek eine UTC-Datumszeit in eine lokale Datumszeit in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!