Heim >Backend-Entwicklung >Python-Tutorial >Wie konvertiere ich die Python-Objekte „datetime.date' und „datetime.datetime' genau in UTC-Zeitstempel?

Wie konvertiere ich die Python-Objekte „datetime.date' und „datetime.datetime' genau in UTC-Zeitstempel?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-19 22:53:10537Durchsuche

How to Accurately Convert Python `datetime.date` and `datetime.datetime` Objects to UTC Timestamps?

Konvertieren von datetime.date in UTC-Zeitstempel in Python

Beim Umgang mit Datumsangaben in Python besteht die Notwendigkeit, diese in UTC-Zeitstempel für zu konvertieren verschiedene Anwendungen. Die Verwendung herkömmlicher Methoden wie datetime.datetime.utcfromtimestamp(time.mktime(d)) kann jedoch zu falschen Ergebnissen führen.

Konvertieren eines UTC-Datums in Sekunden seit der Epoche

Für ein in UTC dargestelltes Datum d lautet die richtige Formel zur Umrechnung in Sekunden seit der Epoche:

timestamp1 = calendar.timegm(d.timetuple())

Dies Methode stellt sicher, dass der resultierende Zeitstempel das Datum in UTC darstellt.

Konvertieren eines Ortszeitdatums in Sekunden seit der Epoche

Wenn das Datum d in der lokalen Zeitzone liegt, verwenden Sie mktime () kann zu falschen Ergebnissen führen. Um dies zu beheben, können wir Folgendes verwenden:

timestamp2 = time.mktime(d.timetuple())

Beachten Sie jedoch, dass Zeitstempel1 und Zeitstempel2 unterschiedlich sein können, wenn die lokale Mitternacht von der UTC-Mitternacht abweicht.

Konvertieren von datetime.date in UTC ohne Calendar.timegm()

Um ein datetime.date-Objekt direkt in einen UTC-Zeitstempel zu konvertieren, müssen Sie kann die folgenden Formeln verwenden:

timestamp = (utc_date.toordinal() - date(1970, 1, 1).toordinal()) * DAY
timestamp = (utc_date - date(1970, 1, 1)).days * DAY

Konvertieren von datetime.datetime in UTC in POSIX-Zeitstempel

Für ein datetime.datetime-Objekt, das bereits in UTC ist, gelten die folgenden Methoden verfügbar:

  • Python 3.3 Angebote datetime.timestamp():
timestamp = dt.replace(tzinfo=timezone.utc).timestamp()
  • Python 3 (< 3.3):
timestamp = (dt - datetime(1970, 1, 1)) / timedelta(seconds=1)
  • Python 2:
timestamp = (dt - datetime(1970, 1, 1)).total_seconds()

Konvertieren eines Aware Datetime-Objekts in POSIX-Zeitstempel

Für ein bewusstes Datetime-Objekt (Datetime mit Zeitzoneninformationen) wird der folgende Ansatz empfohlen:

timestamp = dt.timestamp() # Python 3.3+
timestamp = (dt - epoch) / timedelta(seconds=1) # Python 3
timestamp = (dt - epoch) // timedelta(seconds=1) # Python 3 integer timestamp

Das obige ist der detaillierte Inhalt vonWie konvertiere ich die Python-Objekte „datetime.date' und „datetime.datetime' genau in UTC-Zeitstempel?. 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