Heim >Backend-Entwicklung >Python-Tutorial >Wie konvertiert man ein Python-Datetime-Objekt präzise in Epoch Time, ohne strftime(\'%s\') zu verwenden?
Python-Datetime in Epoche mithilfe von strftime konvertieren
Ursprünglich bestand das Ziel darin, eine UTC-Zeit in die Anzahl der Sekunden seit der Verwendung der Epoche umzuwandeln strftime. Bei Verwendung von strftime mit dem Format „%s“ wich der resultierende Wert jedoch um eine Stunde von der erwarteten Epochenanzahl ab. Die Untersuchung dieser Diskrepanz ergab, dass strftime die Systemzeit berücksichtigt und sich an Zeitzonenunterschiede anpasst, obwohl Datum und Uhrzeit als naiv gelten.
Lösung
Um dieses Problem zu lösen, sollten Sie Folgendes in Betracht ziehen die folgenden Alternativen:
Python 3.3 und höher
Verwenden Sie die timestamp()-Methode von datetime:
>>> datetime.datetime(2012, 4, 1, 0, 0).timestamp() 1333234800.0
Python 3.2 und früher
Berechnen Sie explizit die Differenz zwischen der angegebenen Datumszeit und der Epochen-Datumszeit:
>>> (datetime.datetime(2012, 4, 1, 0, 0) - datetime.datetime(1970, 1, 1)).total_seconds() 1333238400.0
Achtung: strftime('%s') vermeiden
Es ist wichtig zu beachten, dass datetime den Formatbezeichner „%s“ für strftime nicht offiziell unterstützt. Seine aktuelle Funktionalität beruht auf der Interaktion mit der strftime-Implementierung des Systems, die Zeitzonenunterschiede anpasst. Die Verwendung von strftime('%s') kann aufgrund möglicher Zeitzonenschwankungen zu inkonsistenten Ergebnissen führen.
Das obige ist der detaillierte Inhalt vonWie konvertiert man ein Python-Datetime-Objekt präzise in Epoch Time, ohne strftime(\'%s\') zu verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!