Heim  >  Artikel  >  Backend-Entwicklung  >  Wie konvertiere ich mithilfe der Standardbibliothek eine UTC-Datumszeit in eine lokale Datumszeit in Python?

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

Linda Hamilton
Linda HamiltonOriginal
2024-11-02 03:43:30925Durchsuche

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>

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>

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>

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>

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

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!

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