在Python中获取Unix时间

问题描述 投票:0回答:1

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

调用函数

time.time()
似乎是获取所需时间戳的一种非常合理且简洁的方法......直到我阅读文档:

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

gmtime
(0)

[...]

(版本:3.5~3.9

短语“epoch ...依赖于平台”是一个警告信号。狡猾的短语是“mostUnix 系统”。 Python 的

time.time()
纪元是 not 1970-01-01T00:00:00Z 的 Unix 或非 Unix 系统的示例有哪些?

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


深入挖掘,我还注意到以前版本的Python似乎没有这些警告

time.time()

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

(版本:2.73.2~3.4

甚至更旧的措辞:

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

(版本:2.2~2.63.0~3.1

python python-3.x timestamp standard-library
1个回答
7
投票

如果您不想依赖

time.time()
实现和(可能)变量纪元,您可以通过获取当前日期时间自行计算 Unix 时间戳,并减去所需的 Unix 时间戳纪元的日期时间( 1970 年 1 月 1 日),并获取秒数:

from datetime import datetime

unix_timestamp = (datetime.utcnow() - datetime(1970, 1, 1)).total_seconds()

注意:您可能想添加时区信息。

编辑:根据评论进行编辑,使用

datetime.utcnow
似乎是正确的方法。

© www.soinside.com 2019 - 2024. All rights reserved.