datetime.datetime对象的总和给出了错误TypeError:+:'datetime.datetime'和'datetime.datetime'的不支持的操作数类型

时间:2013-09-29 02:34:46

标签: python list datetime sum timedelta

我正在尝试使用以下方法汇总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)

谢谢!

2 个答案:

答案 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通常不会做任何根本没有意义的事情; - )