我有一个包含时间戳的数据文件,如“1331856000000”。不幸的是,我没有很多关于格式的文档,所以我不确定时间戳是如何格式化的。我试过 Python 的标准 datetime.fromordinal()
和 datetime.fromtimestamp()
和其他一些,但没有匹配。我很确定特定数字对应于当前日期(例如 2012-3-16),但仅此而已。
如何将此数字转换为 datetime
?
原文由 Cerin 发布,翻译遵循 CC BY-SA 4.0 许可协议
或者,您可以使用 pandas.to_datetime
并为自己选择单位和时区。这避免了上一个答案中提到的所有评论和问题:
import pandas as pd
pd.to_datetime(int('1331856000000'), utc=True, unit='ms')
# Timestamp('2012-03-16 00:00:00+0000', tz='UTC')
原文由 My Work 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答5.1k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答974 阅读✓ 已解决
3 回答1.1k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
1 回答1.2k 阅读✓ 已解决
datetime.datetime.fromtimestamp()
是正确的,除了你可能有以毫秒为单位的时间戳(就像在 JavaScript 中),但是fromtimestamp()
期望 Unix 时间戳,以秒为单位。这样做:
结果是:
它能回答你的问题吗?
编辑:JF Sebastian 正确地建议 使用真除法
1e3
(float1000
)。如果您想获得精确的结果,则差异很大,因此我更改了答案。 The difference results from the default behaviour of Python 2.x, which always returnsint
when dividing (using/
operator)int
byint
(这称为 _楼层划分_)。 By replacing the divisor1000
(being anint
) with the1e3
divisor (being representation of1000
as float) or withfloat(1000)
(或1000.
等),除法变为 _真除法_。 Python 2.x returnsfloat
when dividingint
byfloat
,float
byint
,float
通过float
等 当时间戳中有小数部分传递给fromtimestamp()
方法时,该方法的结果还包含有关该小数部分的信息(作为微秒数).