我在UTC有一个时间,我想要从纪元开始经过的秒数。
我正在使用strftime将其转换为秒数。以2012年4月1日为例。
>>>datetime.datetime(2012,04,01,0,0).strftime('%s') '1333234800'
从纪元开始的UTC时间为2012年4月1日,但上述时间返回1333234800,相差1小时。
因此,看来strftime正在考虑我的系统时间,并在某处应用了时区偏移。我以为日期时间纯粹是天真的?
我该如何解决?如果可能的话,除非标准,否则避免导入其他库。(我有可移植性问题)。
如果要将python日期时间转换为自纪元以来的秒数,则可以明确地执行以下操作:
>>> (datetime.datetime(2012,04,01,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')
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'