为这个简单的问题道歉...我是Python的新手。我到处找了找,似乎什么也没找到。
我有一堆datetime对象,我想为每个对象计算自过去固定时间以来的秒数(例如,自1970年1月1日以来)。
import datetime
t = datetime.datetime(2009, 10, 21, 0, 0)
这似乎只是区分具有不同日期的日期:
t.toordinal()
任何帮助都是非常感谢的。
发布于 2011-10-22 01:21:37
对于1970年1月1日这一特殊日期,有多个选项。
对于任何其他开始日期,您需要以秒为单位获取两个日期之间的差值。减去两个日期得到一个timedelta
对象,该对象在Python2.7中有一个total_seconds()
函数。
>>> (t-datetime.datetime(1970,1,1)).total_seconds()
1256083200.0
开始日期通常以协调时为单位指定,因此为获得正确的结果,您输入到此公式中的datetime
也应以协调时为单位。如果您的datetime
尚未使用UTC,则需要在使用它之前对其进行转换,或者附加一个具有适当偏移量的tzinfo
类。
正如注释中所指出的,如果您的datetime
附加了tzinfo
,那么在开始日期时也需要一个,否则减法将失败;对于上面的示例,如果使用Python2,我将添加tzinfo=pytz.utc
;如果使用Python3,我将添加tzinfo=timezone.utc
。
发布于 2015-05-11 04:36:48
从Python3.3开始,使用datetime.timestamp()
方法就变得非常简单。当然,只有当您需要1970-01-01 UTC的秒数时,这才是有用的。
from datetime import datetime
dt = datetime.today() # Get timezone naive now
seconds = dt.timestamp()
返回值将是一个表示偶数秒的浮点数。如果datetime是时区naive (如上例所示),则假定datetime对象表示本地时间,即从您所在位置的当前时间到1970-01-01 UTC的秒数。
发布于 2011-10-22 01:14:10
要获取Unix时间(自1970年1月1日以来的秒数):
>>> import datetime, time
>>> t = datetime.datetime(2011, 10, 21, 0, 0)
>>> time.mktime(t.timetuple())
1319148000.0
https://stackoverflow.com/questions/7852855
复制相似问题