Heim  >  Artikel  >  Backend-Entwicklung  >  Wie konvertiere ich UTC Datetime in die lokale Zeitzone mithilfe der Standardbibliothek von Python?

Wie konvertiere ich UTC Datetime in die lokale Zeitzone mithilfe der Standardbibliothek von Python?

Susan Sarandon
Susan SarandonOriginal
2024-11-01 14:20:29676Durchsuche

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

UTC-Datumszeit in lokale Zeitzone mithilfe der Standardbibliothek konvertieren

Bei der Arbeit mit Datums- und Uhrzeitangaben ist es häufig erforderlich, zwischen verschiedenen Zeitzonen zu konvertieren, insbesondere beim Abrufen und Anzeigen persistenter Daten. Dieser Artikel zeigt, wie man eine UTC-Datumszeit in eine lokale Datumszeit konvertiert, indem man nur die Python-Standardbibliothek verwendet und mehrere Lösungen für Python 2 und 3 bietet.

Standardmäßige lokale Zeitzone

Zum Konvertieren einer UTC-Datumszeit in Um ein lokales Datum und eine lokale Uhrzeit zu verwenden, müssen wir die standardmäßige lokale Zeitzone kennen. Leider bietet Python keine einfache Methode zum Abrufen dieser Informationen. Wir können jedoch ein Zeitzonenobjekt erstellen und verwenden, um es darzustellen.

Mit datetime.astimezone()

In Python 3.3 können wir die Methode datetime.astimezone(tz) verwenden, um das zu konvertieren datetime in eine lokale Zeitzone umwandeln. Allerdings müssen wir noch die standardmäßige lokale Zeitzone abrufen, was wir mit timezone.utc erreichen können.

<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>

Verwendung von Kalender und Datum/Uhrzeit

In Python 2/3, wo datetime.astimezone () nicht verfügbar ist, können wir den folgenden Ansatz verwenden:

<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>

Beispielverwendung

Hier ist ein Beispiel für die Verwendung der Funktion utc_to_local() mit einer benutzerdefinierten Formatierungsfunktion:

<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>

Fazit

Das Konvertieren einer UTC-Datumszeit in eine lokale Datumszeit nur unter Verwendung der Standardbibliothek in Python erfordert entweder die Erstellung eines Zeitzonenobjekts oder die Verwendung eines komplexeren Ansatzes mit Kalender- und Datum-/Uhrzeitoperationen. Während die Verwendung von pytz oder tzlocal bequemer ist, demonstrieren diese Lösungen die Flexibilität der Python-Standardbibliothek für die Handhabung von Datums-/Uhrzeitkonvertierungen ohne externe Abhängigkeiten.

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

Stellungnahme:
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