我有一个UTC的时间,我想要从epoch开始的秒数。
我使用strftime将其转换为秒数。以2012年4月1日为例。
>>>datetime.datetime(2012,04,01,0,0).strftime('%s')
'1333234800'
2012年4月1日的世界时是1333238400,但上面返回的是1333234800,相差1小时。
因此,看起来strftime正在考虑我的系统时间,并在某个地方应用时区移位。我还以为约会时间太天真了?
我怎么才能避开这个问题呢?如果可能,避免导入其他库,除非标准。(我担心携带不便)。
如果你想将python datetime转换为seconds since epoch,你可以显式地这样做:
>>> (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,而strftime使用您的本地时区。
>>> datetime.datetime(2012,04,01,0,0).strftime('%s')
'1333234800'