协慌网

登录 贡献 社区

将 Unix 时间戳字符串转换为可读日期

我有一个表示 Python 中的 unix 时间戳(即 “1284101485”)的字符串,我想将其转换为可读的日期。当我使用time.strftime ,出现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

答案

使用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)

取自http://seehuhn.de/pages/pdate

投票最多的答案建议使用 fromtimestamp,因为它使用本地时区,因此容易出错。为了避免出现问题,更好的方法是使用 UTC:

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

其中 posix_time 是要转换的 Posix 纪元时间