使用 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中文网其他相关文章!