如何将整数时间戳转换为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
),分割变得真实划分。除以float
int
,float
通过int
,float
通过float
等。而当有传递给fromtimestamp()
方法时间戳一些小数部分,这种方法的结果还包含有关小数部分(信息的数量时的Python 2.x的返回float
微秒)。
使用真正的部门:'/ 1e3' – jfs 2012-03-16 21:42:59
@ J.F.Sebastian:你是完全正确的,我编辑了我的答案并添加了一些解释你为什么是对的。如果您不同意解释,请告诉我。 – Tadeck 2012-03-16 22:06:26
我发现更清楚写x * 0.001而不是x/1e3 – 2013-11-06 17:37:34