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

问题描述:

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

如何将此号码转换为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) 

是否回答你的问题?

EDIT:J.F.塞巴斯蒂安由1e3正确建议使用真分割(浮动1000)。如果你想得到准确的结果,差异是很大的,因此我改变了我的答案。不同的结果是Python 2.x的默认行为,它总是在分割时使用int(使用/运算符)int,int(这称为floor division)。通过与1e3除数(的1000是表示作为浮点型)或具有float(1000)(或1000.等)替换除数1000(作为一个int),分割变得真实划分。除以floatintfloat通过intfloat通过float等。而当有传递给fromtimestamp()方法时间戳一些小数部分,这种方法的结果还包含有关小数部分(信息的数量时的Python 2.x的返回float微秒)。

+6

使用真正的部门:'/ 1e3' – jfs 2012-03-16 21:42:59

+0

@ J.F.Sebastian:你是完全正确的,我编辑了我的答案并添加了一些解释你为什么是对的。如果您不同意解释,请告诉我。 – Tadeck 2012-03-16 22:06:26

+3

我发现更清楚写x * 0.001而不是x/1e3 – 2013-11-06 17:37:34