首页 > 解决方案 > 在 Python 中获取 Unix 时间

问题描述

在 Python 中,我想获取当前的 Unix 时间戳,然后长期存储该值并由非 Python 系统处理。(我不只是试图计算同一程序运行中两个时间戳之间的差异。)

调用该函数time.time()似乎是获得所需时间戳的一种非常合理且简洁的方式......直到我阅读了文档:

以浮点数形式返回自纪元以来的时间(以秒为单位)。纪元的具体日期和闰秒的处理取决于平台。在 Windows 和大多数 Unix 系统上,纪元是 1970 年 1 月 1 日 00:00:00 (UTC),并且闰秒不计入纪元以来的时间(以秒为单位)。这通常称为 Unix 时间。要了解给定平台上的纪元,请查看.gmtime(0)

[...]

(版本:3.5 ~ 3.9

短语“epoch ... is platformdependent”是一个警告信号。Weasel 短语是“大多数Unix 系统”。time.time()Python 的纪元不是1970-01-01T00:00:00Z的 Unix 或非 Unix 系统有哪些示例?

对我的目标来说是time.time()不安全的吗?我应该寻找替代品datetime.datetime.now().timestamp()吗?


深入挖掘,我还注意到以前版本的 Python 似乎没有以下警告time.time()

以浮点数形式返回自纪元以来的时间(以秒为单位)。请注意,尽管时间始终以浮点数形式返回,但并非所有系统都提供比 1 秒更好的时间精度。虽然此函数通常返回非递减值,但如果系统时钟已在两次调用之间调回,则它可以返回比先前调用更低的值。

(版本:2.7 , 3.2 ~ 3.4

甚至更旧的措辞:

以浮点数形式返回时间,以自纪元以​​来的秒数表示,以 UTC 为单位。请注意,尽管时间始终以浮点数形式返回,但并非所有系统都提供比 1 秒更好的时间精度。虽然此函数通常返回非递减值,但如果系统时钟已在两次调用之间调回,则它可以返回比先前调用更低的值。

(版本: 2.2 ~ 2.6 , 3.0 ~ 3.1 )

标签: pythonpython-3.xtimestampstandard-library

解决方案


推荐阅读