使用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

上一篇: Convert python datetime to epoch with strftime

下一篇: Pythonic way to create a long multi