【问题标题】:sum of datetime.datetime object gave an error TypeError: unsupported operand type(s) for +: 'datetime.datetime' and 'datetime.datetime'datetime.datetime 对象的总和给出了一个错误 TypeError: unsupported operand type(s) for +: 'datetime.datetime' 和 'datetime.datetime'
【发布时间】:2013-10-05 02:41:35
【问题描述】:

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

谢谢!

【问题讨论】:

    标签: python list datetime sum timedelta


    【解决方案1】:

    这仅仅是因为您无法添加时间。您可以添加时间增量,但不能添加时间本身。

    我的意思是,1995 年 8 月 3 日rd + 454 年 6 月 19th 是什么?这没有意义。您可以添加与第 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] 的偏移量总和,即那些,然后将该偏移量加回。

    【讨论】:

    • 这些日期的平均值,将其作为 timedelta 对象将是很棒的。
    【解决方案2】:

    你不能总结这个列表:正如错误消息所说,datetime.datetime 对象不能被添加。例如,您希望datetime.datetime(2013, 5, 1, 9, 31, 24), datetime.datetime(2013, 6, 11, 17, 22, 18) 返回什么? Python 通常不会做毫无意义的事情 ;-)

    【讨论】:

      猜你喜欢
      • 2017-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-12
      • 2020-04-04
      • 1970-01-01
      相关资源
      最近更新 更多