
Dieser Artikel genau, wie Sie zwischen der Unix-Zeit (Epoch-Zeit) und dem datetime-Objekt konvertieren, das Datums- und Zeitangaben in Python darstellt.
- Was ist Unix-Zeit (Epoch-Zeit, Posix-Zeit)?
- Konvertieren Sie die Unix-Zeit (Epoch-Zeit) in datetime:
fromtimestamp()
- Konvertieren Sie datetime in Unix-Zeit (Epoch-Zeit):
timestamp()
Die Unix-Zeit (auch bekannt als Epoch Time, Posix-Zeit) ist die Anzahl der Sekunden, die seit der Unix-Epoche, 00:00:00 UTC (Coordinated Universal Time) am 1. Januar 1970, vergangen sind.
Die Unix-Zeit WIRD auch used, um Dateizeitstempel (Erstellungs- und Änderungsdaten) darzustellen. Weitere Informationen finden Sie im folgenden Artikel.
Was ist Unix-Zeit (Epoch-Zeit, Posix-Zeit)?
Die Unix-Zeit ist die Anzahl der Sekunden, die seit der Unix-Epoche, 00:00:00 UTC (Coordinated Universal Time) am 1. Januar 1970, vergangen sind. Sie ist auch als Epochenzeit, Posix-Zeit usw. bekannt.
Die Unix-Zeit (auch bekannt als Epochenzeit, Posix-Zeit, Sekunden seit der Epoche oder UNIX-Epochenzeit) ist ein System zur Beschreibung eines Zeitpunkts. Es ist die Anzahl der Sekunden, die seit der Unix-Epoche vergangen sind, ohne Schaltsekunden. Die Unix-Epoche ist 00:00:00 UTC am 1. Januar 1970 (ein willkürliches Datum).
Unix-Zeit – Wikipedia
Konvertieren Sie die Unix-Zeit (Epoch-Zeit) in datetime:fromtimestamp()
Um Datums- und Uhrzeitangaben in Python zu manipulieren, can SIE das datetime-Modul verwenden.
Verwenden Sie datetime.fromtimestamp() des datetime-Moduls, um die Unix-Zeit (Epochenzeit) in ein datetime-Objekt umzuwandeln. Geben Sie die Unix-Zeit als Argument an.
Standardmäßig wird es in das lokale Datum und die lokale Uhrzeit konvertiert. Wenn Sie das Programm beispielsweise auf einem Computer mit der Umgebung Japan Standard Time (JST) ausführen, wird die Zeitdifferenz (+9 Stunden) berücksichtigt.
Wenn 0 als Argument angegeben wird:
import datetime
dt = datetime.datetime.fromtimestamp(0)
print(dt)
# 1970-01-01 09:00:00
print(type(dt))
# <class 'datetime.datetime'>
print(dt.tzinfo)
# None
Standardmäßig werden naive datetime-Objekte zurückgegeben, bei denen das tzinfo-Attribut auf None gesetzt ist.
Wenn SIE eine Zeitzone für das zweite Argument tz angeben, WIRD das tzinfo-Attribut gesetzt und ein bewusstes datetime-Objekt mit korrekt in diese Zeitzone konvertiertem Datum und Uhrzeit zurückgegeben.
dt_utc_aware = datetime.datetime.fromtimestamp(0, datetime.timezone.utc)
print(dt_utc_aware)
# 1970-01-01 00:00:00+00:00
print(dt_utc_aware.tzinfo)
# UTC
dt_jst_aware = datetime.datetime.fromtimestamp(0, datetime.timezone(datetime.timedelta(hours=9)))
print(dt_jst_aware)
# 1970-01-01 09:00:00+09:00
print(dt_jst_aware.tzinfo)
# UTC+09:00
datetime.utcfromtimestamp(), das ein naives datetime-Objekt in UTC (= tzinfo-Attribut ist None) zurückgibt, wird ebenfalls bereitgestellt.
dt_utc_naive = datetime.datetime.utcfromtimestamp(0)
print(dt_utc_naive)
# 1970-01-01 00:00:00
print(dt_utc_naive.tzinfo)
# None
Konvertieren Sie datetime in Unix-Zeit (Epoch-Zeit):timestamp()
Verwenden Sie die Methode timestamp(), um ein datetime-Objekt in die Unix-Zeit (Epochenzeit) zu konvertieren. Die Unix-Zeit wird als Fließkommazahl Float zurückgegeben.
Verwenden Sie das vom obigen Beispielcode erstellte datetime-Objekt als Beispiel.
print(dt)
# 1970-01-01 09:00:00
print(dt.timestamp())
# 0.0
print(type(dt.timestamp()))
# <class 'float'>
Naive Objekte, bei denen das tzinfo-Attribut auf None gesetzt IST, werden basierend auf der Zeitzone der Ausführungsumgebung konvertiert, und bewusste Objekte mit dem tzinfo-Attribut werden basierend auf ihrer Zeitzone konvertiert.
Beachten Sie, dass das von utcfromtimestamp() erstellte Objekt in UTC naiv ist (tzinfo-Attribut ist None), sodass sich das Ergebnis von den anderen Objekten unterscheidet.
print(dt_utc_aware)
# 1970-01-01 00:00:00+00:00
print(dt_utc_aware.timestamp())
# 0.0
print(dt_jst_aware)
# 1970-01-01 09:00:00+09:00
print(dt_jst_aware.timestamp())
# 0.0
print(dt_utc_naive)
# 1970-01-01 00:00:00
print(dt_utc_naive.timestamp())
# -32400.0
Wenn Sie die Zeitzone nicht berücksichtigen müssen, brauchen Sie sich darüber keine Gedanken zu machen, da sowohl fromtimestamp() als auch timestamp() basierend auf der lokalen Zeit des Computers konvertiert werden.