如何在Python中获得timedelta的总和?

use*_*652 20 python datetime timedelta

Python:如何获得timedelta的总和?

例如.我刚收到很多timedelta对象,现在我想要总和.而已!

Mar*_*ers 38

要添加timedeltas,您可以使用内置运算符+:

result = timedelta1 + timedelta2
Run Code Online (Sandbox Code Playgroud)

要添加大量timedeltas,您可以使用sum:

result = sum(timedeltas, datetime.timedelta())
Run Code Online (Sandbox Code Playgroud)

或减少:

import operator
result = reduce(operator.add, timedeltas)
Run Code Online (Sandbox Code Playgroud)

  • 为了引导可能正在搜索它的其他人,没有第二个参数的错误是``TypeError:不支持的操作数类型+:'type'和'datetime.timedelta'``.解释为什么需要第二个论证的官方文档是[这里](http://docs.python.org/2/library/functions.html#sum). (6认同)
  • @pelson:你缺少第二个参数.`sum([datetime.timedelta(1),datetime.timedelta(0,14700)],datetime.timedelta())`给出`datetime.timedelta(1,14700)`. (4认同)
  • 使用reduce的好答案。 (2认同)

pyf*_*unc 9

datetime combine方法允许您将时间与增量相结合

datetime.combine(date.today(), time()) + timedelta(hours=2)
Run Code Online (Sandbox Code Playgroud)

timedelta可以使用通常的"+"运算符进行组合

>>> timedelta(hours=3) 
datetime.timedelta(0, 10800)
>>> timedelta(hours=2)
datetime.timedelta(0, 7200)
>>>
>>> timedelta(hours=3) + timedelta(hours=2)
datetime.timedelta(0, 18000)
>>> 
Run Code Online (Sandbox Code Playgroud)

您可以阅读日期时间模块文档和一个非常好的简单介绍