Heim > Backend-Entwicklung > Python-Tutorial > Wie konvertiert man Python-Datumsobjekte korrekt in UTC-Zeitstempel?

Wie konvertiert man Python-Datumsobjekte korrekt in UTC-Zeitstempel?

Susan Sarandon
Freigeben: 2024-12-15 08:50:10
Original
783 Leute haben es durchsucht

How to Correctly Convert Python Date Objects to UTC Timestamps?

Konvertieren von Datumsobjekten in UTC-Zeitstempel in Python

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

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.

Verarbeitung von Datumsobjekten in UTC

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

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

Die Ausgabe stimmt mit den vorherigen Ansätzen überein.

Konvertieren von Datetime-Objekten in UTC-Zeitstempel

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

Python 3 (< 3.3)

timestamp = (dt - datetime(1970, 1, 1, tzinfo=timezone.utc)) / timedelta(seconds=1)
Nach dem Login kopieren

Python 2

timestamp = (dt - datetime(1970, 1, 1)).total_seconds()
Nach dem Login kopieren

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!

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