如何将整数时间戳转换为Pythondate时间

我有一个数据文件包含像“1331856000000”的时间戳。 不幸的是,我没有很多格式的文档,所以我不知道如何格式化时间戳。 我已经尝试了Python的标准datetime.fromordinal()datetime.fromtimestamp()和其他几个,但没有任何匹配。 我很确定,特定的数字对应于当前date(例如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) 

它回答你的问题吗?

编辑 :JF塞巴斯蒂安正确地build议使用真正除 1e3 (浮法1000 )。 差异是显着的,如果你想得到确切的结果,所以我改变了我的答案。 不同的结果是Python 2.x的默认行为,当用int分隔(使用/运算符) int (这被称为floor division )时,它总是返回int 。 通过用1e3除数(表示1000作为浮点数)或float(1000) (或1000.等)replace除数1000 (是一个int ),该除法成为真正的除法 。 Python 2.x在floatintint floatfloat float等等时返回float当传递给fromtimestamp()方法的时间戳记中有小数部分时,这个方法的结果还包含了小数部分的信息微秒数)。