首页  >  文章  >  后端开发  >  如何在不使用 strftime(\'%s\') 的情况下准确地将 Python 日期时间对象转换为纪元时间?

如何在不使用 strftime(\'%s\') 的情况下准确地将 Python 日期时间对象转换为纪元时间?

DDD
DDD原创
2024-11-20 04:53:01291浏览

How to Accurately Convert a Python datetime Object to Epoch Time Without Using strftime('%s')?

使用 strftime 将 Python 日期时间转换为纪元

最初的目的是将 UTC 时间转换为自纪元以来的秒数,使用时间。但是,在使用带有“%s”格式的 strftime 时,结果值与预期纪元计数相差一个小时。调查此差异后发现,strftime 合并了系统时间并根据时区差异进行调整,尽管 datetime 被认为是幼稚的。

解决方案

要解决此问题,请考虑以下替代方案:

Python 3.3 及更高版本

  • 利用日期时间的 timestamp() 方法:

    >>> datetime.datetime(2012, 4, 1, 0, 0).timestamp()
    1333234800.0

Python 3.2 及更早版本

  • 显式计算给定日期时间和纪元日期时间之间的差异:

    >>> (datetime.datetime(2012, 4, 1, 0, 0) - datetime.datetime(1970, 1, 1)).total_seconds()
    1333238400.0

警告:避免使用 strftime('%s')

需要注意的是,datetime 并不正式支持 strftime 的 '%s' 格式说明符。它当前的功能是由于与系统的 strftime 实现的交互,该实现根据时区差异进行调整。由于潜在的时区变化,使用 strftime('%s') 可能会导致结果不一致。

以上是如何在不使用 strftime(\'%s\') 的情况下准确地将 Python 日期时间对象转换为纪元时间?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn