2013-09-29 85 views
2

我想总结一个datetime.datetime对象的列表使用:datetime.datetime对象的总和给了一个错误TypeError:不支持的操作数类型为+:'datetime.datetime'和'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) 

谢谢!

回答

8

这只是因为你不能添加时间。你可以添加时间增量,但不是时间本身。

我的意思是,什么是3 rd 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]偏移量的总和,是指那些然后再添加该偏移量。

+0

这些日期的平均值,将很好地把它作为timedelta对象。 – mongotop

3

您不能总结此列表:如错误消息所述,datetime.datetime对象无法添加。例如,地球上有什么,你会期望datetime.datetime(2013, 5, 1, 9, 31, 24), datetime.datetime(2013, 6, 11, 17, 22, 18)返回? Python通常不会做任何没有任何意义的事情;-)

相关问题