问题描述
在 Python 中,我想获取当前的 Unix 时间戳,然后长期存储该值并由非 Python 系统处理。 (我不仅仅是想计算同一程序运行中两个时间戳之间的差异。)
调用函数 time.time()
似乎是获得所需时间戳的一种非常合理和简洁的方法......直到我阅读文档:
以浮点数形式返回自 epoch 开始的时间(以秒为单位)。纪元的具体日期和闰秒的处理取决于平台。在 Windows 和大多数 Unix 系统上,纪元是 1970 年 1 月 1 日的 00:00:00 (UTC),闰秒不计入纪元以来的时间(以秒为单位)。这通常称为 Unix 时间。要了解给定平台上的时代,请查看 gmtime
(0)
。
[...]
短语“epoch ...取决于平台”是一个警告信号。一个狡猾的短语是“大多数 Unix 系统”。有哪些 Unix 或非 Unix 系统的例子,其中 Python 的 time.time()
的时代不是 1970-01-01T00:00:00Z?
time.time()
对我的目标是否有点不安全?我应该寻找像 datetime.datetime.Now().timestamp()
这样的替代品吗?
深入挖掘,我还注意到以前版本的 Python 似乎没有这些关于 time.time()
的警告:
以浮点数形式返回自纪元以来的时间(以秒为单位)。请注意,即使时间总是作为浮点数返回,但并非所有系统都提供比 1 秒更精确的时间。虽然此函数通常返回非递减的值,但如果系统时钟在两次调用之间已回退,则它可以返回比前一次调用低的值。
甚至更旧的措辞:
返回时间为浮点数,以自纪元以来的秒数表示,以 UTC 为单位。请注意,即使时间总是作为浮点数返回,但并非所有系统都提供比 1 秒更精确的时间。虽然此函数通常返回非递减的值,但如果系统时钟在两次调用之间已回退,则它可以返回比前一次调用低的值。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)