1139 Stimmen

Umwandlung einer Unix-Zeitstempel-Zeichenkette in ein lesbares Datum

Ich habe eine Zeichenfolge, die einen Unix-Zeitstempel (z. B. "1284101485") in Python darstellt, und ich möchte es in ein lesbares Datum konvertieren. Wenn ich time.strftime erhalte ich eine TypeError :

>>>import time
>>>print time.strftime("%B %d %Y", "1284101485")

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: argument must be 9-item sequence, not str

5 Stimmen

Link zur Frage der Rückumwandlung: stackoverflow.com/q/19801727/3273031

1588voto

Michał Niklas Punkte 50723

Utilice datetime Modul:

from datetime import datetime
ts = int('1284101485')

# if you encounter a "year is out of range" error the timestamp
# may be in milliseconds, try `ts /= 1000` in that case
print(datetime.utcfromtimestamp(ts).strftime('%Y-%m-%d %H:%M:%S'))

333voto

Daniel Punkte 3621
>>> from datetime import datetime
>>> datetime.fromtimestamp(1172969203.1)
datetime.datetime(2007, 3, 4, 0, 46, 43, 100000)

Entnommen aus http://seehuhn.de/pages/pdate

199voto

rkachach Punkte 15236

Die am häufigsten gewählte Antwort schlägt die Verwendung von fromtimestamp vor, die jedoch fehleranfällig ist, da sie die lokale Zeitzone verwendet. Um Probleme zu vermeiden, ist es besser, UTC zu verwenden:

datetime.datetime.utcfromtimestamp(posix_time).strftime('%Y-%m-%dT%H:%M:%SZ')

Dabei ist posix_time die Posix-Epochenzeit, die Sie konvertieren möchten

96voto

jfs Punkte 370717

Sie besteht aus zwei Teilen:

  1. Konvertierung des Unix-Zeitstempels ("Sekunden seit Epoche") in die Ortszeit
  2. 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))

92voto

John La Rooy Punkte 278961
>>> import time
>>> time.ctime(int("1284101485"))
'Fri Sep 10 16:51:25 2010'
>>> time.strftime("%D %H:%M", time.localtime(int("1284101485")))
'09/10/10 16:51'

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X