我正在尝试使用以下方法汇总datetime.datetime对象:
from datetime import datetime, timedelta
d= [datetime.datetime(2013, 5, 1, 9, 31, 24), datetime.datetime(2013, 6, 11, 17, 22, 18), datetime.datetime(2013, 4, 3, 16, 6, 59)]
sum_d = sum(d, timedelta())
我收到错误:
TypeError: unsupported operand type(s) for +: 'datetime.datetime' and 'datetime.datetime'
知道我做错了什么或者我如何总结这份清单?
我想得到我正在考虑的列表的平均值:
d_avg = sum(d, timedelta()) / len(d)
谢谢!
答案 0 :(得分:11)
这只是因为你无法增加时间。您可以添加时间 deltas ,但不能添加时间。
我的意思是,什么是3月<5> 1995年8月+ 19 th 6月454?这没有意义。您可以添加第0年的距离,但这与添加日期本身不同。
您希望从此计算中获得什么?
如果你希望找到平均值(为什么?),你将不得不使用较不直接的路线
import datetime
d = [datetime.datetime(2013, 5, 1, 9, 31, 24), datetime.datetime(2013, 6, 11, 17, 22, 18), datetime.datetime(2013, 4, 3, 16, 6, 59)]
d[0] + sum((d_i-d[0] for d_i in d), datetime.timedelta(0)) / len(d)
#>>> datetime.datetime(2013, 5, 5, 22, 20, 13, 666667)
这可以找到d[0]
的偏移量之和,意味着那些,然后重新添加该偏移量。
答案 1 :(得分:2)
您无法对此列表求和:如错误消息所示,无法添加datetime.datetime
个对象。例如,您希望datetime.datetime(2013, 5, 1, 9, 31, 24), datetime.datetime(2013, 6, 11, 17, 22, 18)
返回什么地球? Python通常不会做任何根本没有意义的事情; - )