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

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

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

它回答了你的问题吗?

编辑:J.F. Sebastian 正确地建议1e3(浮点1000)使用真正的除法。如果您想获得精确的结果,差异很大,因此我改变了答案。差异源于 Python 2.x 的默认行为,在将 int 除以 时(使用 / 运算符)总是返回 int int(这称为楼层划分)。通过用 1e3 除数(将 1000 表示为 float )替换除数 1000(作为 int)或使用 float(1000)(或 1000. 等),除法变为 真正的除法。 Python 2.x 在将 int 除以 floatfloat 除以 int 时返回 float , float by float 等。当传递给 fromtimestamp() 方法的时间戳中有一些小数部分时,该方法的结果也包含信息关于那个小数部分(作为微秒数)。

https://stackoverflow.com/questions/9744775/

相关文章:

python - glob.glob() 的返回值是如何排序的?

python - 如何在 Python 中将方法作为参数传递

python - 在python中跳过for循环的第一个条目?

asp.net - 在基于 Linux 的服务器上运行 ASP.Net

python - 如何从一列中对 Pandas 数据框进行排序

python - "hashable"在 Python 中是什么意思?

linux - Linux Bash 中的双与号 (&&) 和分号 (;) 有什么区别?

python - numpy 矩阵向量乘法

python - pip 安装 : Please check the permissions and

linux - 如何获取 Linux/UNIX 上当前的网络接口(interface)吞吐量统计信息