Heim >Backend-Entwicklung >Python-Tutorial >Wie konvertiere ich die Python-Objekte „datetime.date' und „datetime.datetime' genau in UTC-Zeitstempel?
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:
timestamp = dt.replace(tzinfo=timezone.utc).timestamp()
timestamp = (dt - datetime(1970, 1, 1)) / timedelta(seconds=1)
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!