Sie besteht aus zwei Teilen:
- Konvertierung des Unix-Zeitstempels ("Sekunden seit Epoche") in die Ortszeit
- Anzeige der Ortszeit im gewünschten Format.
Ein portabler Weg, die lokale Zeit zu erhalten, der auch dann funktioniert, wenn die lokale Zeitzone in der Vergangenheit einen anderen utc-Offset hatte und Python keinen Zugriff auf die tz-Datenbank hat, ist die Verwendung einer pytz
Zeitzone:
#!/usr/bin/env python
from datetime import datetime
import tzlocal # $ pip install tzlocal
unix_timestamp = float("1284101485")
local_timezone = tzlocal.get_localzone() # get pytz timezone
local_time = datetime.fromtimestamp(unix_timestamp, local_timezone)
Zur Anzeige können Sie ein beliebiges Zeitformat verwenden, das von Ihrem System unterstützt wird, z. B.:
print(local_time.strftime("%Y-%m-%d %H:%M:%S.%f%z (%Z)"))
print(local_time.strftime("%B %d %Y")) # print date in your format
Wenn Sie keine Ortszeit benötigen, können Sie stattdessen eine lesbare UTC-Zeit erhalten:
utc_time = datetime.utcfromtimestamp(unix_timestamp)
print(utc_time.strftime("%Y-%m-%d %H:%M:%S.%f+00:00 (UTC)"))
Wenn Sie sich nicht um die Zeitzonenprobleme kümmern, die die welches Datum zurückgegeben wird oder wenn python Zugriff auf die tz-Datenbank auf Ihrem System hat:
local_time = datetime.fromtimestamp(unix_timestamp)
print(local_time.strftime("%Y-%m-%d %H:%M:%S.%f"))
Unter Python 3 können Sie eine zeitzonenkonforme Datetime nur mit stdlib erhalten (der UTC-Offset kann falsch sein, wenn Python keinen Zugriff auf die tz-Datenbank auf Ihrem System hat, z. B. unter Windows):
#!/usr/bin/env python3
from datetime import datetime, timezone
utc_time = datetime.fromtimestamp(unix_timestamp, timezone.utc)
local_time = utc_time.astimezone()
print(local_time.strftime("%Y-%m-%d %H:%M:%S.%f%z (%Z)"))
Funktionen aus dem time
Module sind dünne Umhüllungen der entsprechenden C-API und können daher weniger portabel sein als die entsprechenden datetime
Methoden, sonst könnten Sie sie auch verwenden:
#!/usr/bin/env python
import time
unix_timestamp = int("1284101485")
utc_time = time.gmtime(unix_timestamp)
local_time = time.localtime(unix_timestamp)
print(time.strftime("%Y-%m-%d %H:%M:%S", local_time))
print(time.strftime("%Y-%m-%d %H:%M:%S+00:00 (UTC)", utc_time))
5 Stimmen
Link zur Frage der Rückumwandlung: stackoverflow.com/q/19801727/3273031