使用strftime将python datetime转换为纪元
我有一段UTC时间,我想从这个时间开始计算时代以来的秒数。
我正在使用strftime将其转换为秒数。 以2012年4月1日为例。
>>>datetime.datetime(2012,04,01,0,0).strftime('%s')
'1333234800'
2012年4月1日世界标准时间从世纪开始是1333238400,但是这个返回1333234800,这相差1个小时。
所以看起来strftime正在考虑我的系统时间,并在某处应用时区转换。 我以为日期时间纯粹是天真的?
我该如何解决这个问题? 如果可能的话,避免导入其他库,除非标准。 (我有可移植性问题)。
Python实际上并不支持%s作为strftime的一个参数(如果你检查http://docs.python.org/library/datetime.html#strftime-and-strptime-behavior它不在列表中),唯一的因为Python正在将信息传递到您的系统的strftime,它使用您的本地时区。
如果你想将Python日期时间转换为自时代以来的秒数,你应该明确地做到这一点:
>>> datetime.datetime(2012,04,01,0,0).strftime('%s')
'1333234800'
>>> (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
我对时区等有严重的问题。 Python处理所有这些事情的方式相当混乱(对我来说)。 事情似乎使用日历模块正常工作(请参阅链接1,2,3和4)。
>>> import datetime
>>> import calendar
>>> aprilFirst=datetime.datetime(2012, 04, 01, 0, 0)
>>> calendar.timegm(aprilFirst.timetuple())
1333238400
import time
from datetime import datetime
now = datetime.now()
time.mktime(now.timetuple())
链接地址: http://www.djcxy.com/p/18491.html