我有一个包含时间戳的数据文件,例如“1331856000000”。不幸的是,我没有很多关于格式的文档,所以我不确定时间戳是如何格式化的。我已经尝试过Python的标准datetime.fromordinal()
和datetime.fromtimestamp()
以及其他几个,但没有匹配。我很确定该特定数字对应于当前日期(例如2012-3-16),但不多。
如何将此号码转换为datetime
?
答案 0 :(得分:265)
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
时,它始终返回int
(这称为地板部门)。通过将1000
除数(int
表示为浮点数)或1e3
(或{{1)替换除数1000
(为float(1000)
) }),分裂成为真正的分裂。将1000.
除以float
,将int
除以float
,将float
除以int
等,Python 2.x会返回float
。当传递给float
方法的时间戳中有一些小数部分时,此方法的结果还包含有关该小数部分的信息(作为微秒数)。