如何将整数时间戳转换为Python日期时间

时间:2012-03-16 21:31:42

标签: python datetime timestamp

我有一个包含时间戳的数据文件,例如“1331856000000”。不幸的是,我没有很多关于格式的文档,所以我不确定时间戳是如何格式化的。我已经尝试过Python的标准datetime.fromordinal()datetime.fromtimestamp()以及其他几个,但没有匹配。我很确定该特定数字对应于当前日期(例如2012-3-16),但不多。

如何将此号码转换为datetime

1 个答案:

答案 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方法的时间戳中有一些小数部分时,此方法的结果还包含有关该小数部分的信息(作为微秒数)。