In vielen Szenarien erfordert die Verarbeitung von Datums- und Uhrzeitangaben in Python deren Konvertierung in UTC-Zeitstempel für die nahtlose Integration mit anderen Systemen oder Frameworks, die mit der koordinierten Weltzeit arbeiten. Dieser Konvertierungsprozess kann jedoch auf Hindernisse stoßen. Das folgende Snippet erzeugt beispielsweise ein unerwartetes Ergebnis:
import datetime d = datetime.date(2011, 01, 01) # A date object timestamp = datetime.datetime.utcfromtimestamp(time.mktime(d.timetuple())) print(timestamp) # Output: datetime.datetime(2010, 12, 31, 23, 0)
Das erwartete Ergebnis wäre der UTC-Zeitstempel für den 1. Januar 2011, aber stattdessen erhalten wir den 31. Dezember 2010 um 23:00 UTC.
Lassen Sie uns die Lösung für dieses Problem untersuchen und verstehen, wie Sie die richtigen UTC-Zeitstempel für Datumsobjekte erhalten Python.
Das bereitgestellte Datumsobjekt d ist ein natives Python-Datumsobjekt, das ein Datum ohne Zeitinformationen darstellt. Um den korrekten UTC-Zeitstempel zu erhalten, müssen wir sicherstellen, dass das Datumsobjekt explizit im Kontext von UTC berücksichtigt wird.
Hier sind zwei Methoden, um dies zu erreichen:
Option 1: Verwendung von Calendar.timegm()
Dieser Ansatz geht davon aus, dass das Datumsobjekt d in UTC liegt Zeitzone.
import calendar timestamp = calendar.timegm(d.timetuple()) print(timestamp) # Output: 1293840000
Die Ausgabe ist der korrekte UTC-Zeitstempel für den 1. Januar 2011 um 00:00 Uhr.
Option 2: Verwendung von datetime.timestamp()
Diese Option ist in Python-Versionen 3.3 und höher verfügbar und erfordert, dass wir vor dem Erhalt explizit die UTC-Zeitzone angeben der Zeitstempel.
from datetime import timezone d_utc = d.replace(tzinfo=timezone.utc) # Explicitly specify UTC timezone timestamp = d_utc.timestamp() print(timestamp)
Die Ausgabe stimmt mit den vorherigen Ansätzen überein.
Wenn ja B. ein Datetime-Objekt anstelle eines Date-Objekts, ist der Konvertierungsprozess etwas anders. Sie können die folgenden Methoden verwenden:
Python 3.3
timestamp = dt.replace(tzinfo=timezone.utc).timestamp()
Python 3 (< 3.3)
timestamp = (dt - datetime(1970, 1, 1, tzinfo=timezone.utc)) / timedelta(seconds=1)
Python 2
timestamp = (dt - datetime(1970, 1, 1)).total_seconds()
Denken Sie daran, sich vor möglichen Gleitkommaproblemen in Acht zu nehmen und die Genauigkeit Ihrer Zeitstempel sicherzustellen.
Das obige ist der detaillierte Inhalt vonWie konvertiert man Python-Datumsobjekte korrekt in UTC-Zeitstempel?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!