我有一个 UTC 时间,我想要从纪元开始的秒数。
我正在使用 strftime 将其转换为秒数。以 2012 年 4 月 1 日为例。
>>>datetime.datetime(2012,04,01,0,0).strftime('%s')
'1333234800'
2012 年 4 月 1 日 UTC 从纪元开始是 1333238400,但以上返回 1333234800,相差 1 小时。
所以看起来 strftime 正在考虑我的系统时间并在某处应用时区转换。我认为 datetime 纯粹是幼稚的吗?
我怎样才能解决这个问题?如果可能避免导入其他库,除非是标准的。 (我有便携性问题)。
最佳答案
如果您想将 python 日期时间转换为自纪元以来的秒数,您可以明确地执行此操作:
>>> (datetime.datetime(2012,4,1,0,0) - datetime.datetime(1970,1,1)).total_seconds()
1333238400.0
在 Python 3.3+ 中,您可以使用 timestamp()
而是:
>>> datetime.datetime(2012,4,1,0,0).timestamp()
1333234800.0
为什么不应该使用 datetime.strftime('%s')
Python 实际上并不支持将 %s 作为 strftime 的参数(如果您检查 http://docs.python.org/library/datetime.html#strftime-and-strptime-behavior 它不在列表中),它工作的唯一原因是因为 Python 正在将信息传递给系统的 strftime,它使用您本地的时区。
>>> datetime.datetime(2012,04,01,0,0).strftime('%s')
'1333234800'
关于python - 使用 strftime 将 python 日期时间转换为纪元,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11743019/