我有一个包含诸如“1331856000000”之类的时间戳的数据文件。不幸的是,我没有很多关于格式的文档,所以我不确定时间戳是如何格式化的。我已经尝试过 Python 的标准 datetime.fromordinal()
和 datetime.fromtimestamp()
以及其他一些,但没有任何匹配项。我很确定该特定数字对应于当前日期(例如 2012-3-16),但仅此而已。
如何将此数字转换为 datetime
?
最佳答案
datetime.datetime.fromtimestamp()
是正确的,除了你可能有以毫秒为单位的时间戳(如在 JavaScript 中),但 fromtimestamp()
需要 Unix 时间戳,以秒为单位。
这样做:
>>> import datetime
>>> your_timestamp = 1331856000000
>>> date = datetime.datetime.fromtimestamp(your_timestamp / 1e3)
结果是:
>>> date
datetime.datetime(2012, 3, 16, 1, 0)
它回答了你的问题吗?
编辑:J.F. Sebastian 正确地建议1e3
(浮点1000
)使用真正的除法。如果您想获得精确的结果,差异很大,因此我改变了答案。差异源于 Python 2.x 的默认行为,在将 int
除以 时(使用
(这称为楼层划分)。通过用 /
运算符)总是返回 int
int1e3
除数(将 1000
表示为 float )替换除数 1000
(作为 int
)或使用 float(1000)
(或 1000.
等),除法变为 真正的除法。 Python 2.x 在将 int
除以 float
、float
除以 int
时返回 float
, float
by float
等。当传递给 fromtimestamp()
方法的时间戳中有一些小数部分时,该方法的结果也包含信息关于那个小数部分(作为微秒数)。
关于python - 如何将整数时间戳转换为日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9744775/