2024-04-26 11:18:48 发布
网友
我有一个包含时间戳的数据文件,比如“1331856000000”。不幸的是,我没有很多关于格式的文档,所以我不确定时间戳是如何格式化的。我尝试过Python的标准datetime.fromordinal()和datetime.fromtimestamp()以及其他一些方法,但是没有匹配的。我非常确定特定的数字对应于当前日期(例如2012-3-16),但不会更多。
datetime.fromordinal()
datetime.fromtimestamp()
如何将此数字转换为datetime?
datetime
^{}是正确的,只是时间戳可能以毫秒为单位(类似于JavaScript),但是fromtimestamp()需要Unix时间戳,以秒为单位。
fromtimestamp()
这样做:
>>> import datetime >>> your_timestamp = 1331856000000 >>> date = datetime.datetime.fromtimestamp(your_timestamp / 1e3)
结果是:
>>> date datetime.datetime(2012, 3, 16, 1, 0)
它能回答你的问题吗?
编辑:J.F.塞巴斯蒂安正确地建议通过1e3(float1000)使用真除法。差异是显著的,如果你想得到准确的结果,因此我改变了我的答案。这种差异是由Python 2.x的默认行为造成的,当除以(使用/运算符)int时,python2.x总是返回int(这称为floor division)。通过将除数1000(作为int)替换为1e3除数(作为1000的浮点数表示)或float(1000)(或1000.等),除法成为真除法。Python 2.x返回float当int除以float,float除以int,float除以float等时,并且当传递给fromtimestamp()方法的时间戳中有一些小数部分时,此方法的结果还包含有关该小数部分的信息(以微秒为单位)。
1e3
1000
/
int
float(1000)
1000.
float
^{} 是正确的,只是时间戳可能以毫秒为单位(类似于JavaScript),但是
fromtimestamp()
需要Unix时间戳,以秒为单位。这样做:
结果是:
它能回答你的问题吗?
编辑:J.F.塞巴斯蒂安正确地建议通过
1e3
(float1000
)使用真除法。差异是显著的,如果你想得到准确的结果,因此我改变了我的答案。这种差异是由Python 2.x的默认行为造成的,当除以(使用/
运算符)int
时,python2.x总是返回int
(这称为floor division)。通过将除数1000
(作为int
)替换为1e3
除数(作为1000
的浮点数表示)或float(1000)
(或1000.
等),除法成为真除法。Python 2.x返回float
当int
除以float
,float
除以int
,float
除以float
等时,并且当传递给fromtimestamp()
方法的时间戳中有一些小数部分时,此方法的结果还包含有关该小数部分的信息(以微秒为单位)。相关问题 更多 >
编程相关推荐