我有一个 UTC 时间,我想要从纪元开始的秒数。
我正在使用 strftime 将其转换为秒数。以 2012 年 4 月 1 日为例。
>>>datetime.datetime(2012,04,01,0,0).strftime('%s')
'1333234800'
2012 年 4 月 1 日 UTC 从纪元开始是 1333238400 ,但上面的返回 1333234800 相差 1 小时。
所以看起来 strftime 正在考虑我的系统时间并在某处应用时区转换。我认为 datetime 纯粹是幼稚的?
我怎样才能解决这个问题?如果可能避免导入其他库,除非是标准的。 (我有便携性问题)。
原文由 Noel 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果您想将 python 日期时间转换为自纪元以来的秒数,您可以显式执行此操作:
在 Python 3.3+ 中,您可以使用
timestamp()
代替:为什么你不应该使用
datetime.strftime('%s')
Python 实际上并不支持 %s 作为 strftime 的参数(如果您在 http://docs.python.org/library/datetime.html#strftime-and-strptime-behavior 检查它不在列表中),唯一的它工作的原因是因为 Python 正在将信息传递给您系统的 strftime,它使用您的本地时区。