Jeg har en streng som representerer et unix-tidsstempel (dvs. "1284101485") i Python, og jeg vil konvertere den til en lesbar dato. Når jeg bruker time.strftime
, får jeg en 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
Bruk modulen "datetime":
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'))
>>> from datetime import datetime
>>> datetime.fromtimestamp(1172969203.1)
datetime.datetime(2007, 3, 4, 0, 46, 43, 100000)
Hentet fra http://seehuhn.de/pages/pdate
Svaret med flest stemmer foreslår å bruke fromtimestamp, som er feilutsatt siden det bruker den lokale tidssonen. For å unngå problemer er det bedre å bruke UTC:
datetime.datetime.utcfromtimestamp(posix_time).strftime('%Y-%m-%dT%H:%M:%SZ')
Hvor posix_time er Posix-epoken du ønsker å konvertere.