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

新手上路,请多包涵

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

如何将此数字转换为 datetime

原文由 Cerin 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 453
2 个回答

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 Sebastian 正确地建议 使用真除法 1e3 (float 1000 )。如果您想获得精确的结果,则差异很大,因此我更改了答案。 The difference results from the default behaviour of Python 2.x, which always returns int when dividing (using / operator) int by int (这称为 _楼层划分_)。 By replacing the divisor 1000 (being an int ) with the 1e3 divisor (being representation of 1000 as float) or with float(1000) (或 1000. 等),除法变为 _真除法_。 Python 2.x returns float when dividing int by float , float by int , float 通过 float 等 当时间戳中有小数部分传递给 fromtimestamp() 方法时,该方法的结果还包含有关该小数部分的信息(作为微秒数).

原文由 Tadeck 发布,翻译遵循 CC BY-SA 3.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 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题