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

时间:2010-10-29 07:24:12

标签: python datetime timedelta

Python:如何获得timedelta的总和?

EG。我刚收到很多timedelta对象,现在我想要总和。就是这样!

6 个答案:

答案 0 :(得分:33)

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

result = timedelta1 + timedelta2

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

result = sum(timedeltas, datetime.timedelta())

或减少:

import operator
result = reduce(operator.add, timedeltas)

答案 1 :(得分:9)

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

组合在一起
datetime.combine(date.today(), time()) + timedelta(hours=2)

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)
>>> 

您可以在

阅读日期时间模块文档和非常简单的介绍

答案 2 :(得分:0)

由于这“正常”,我认为这个问题缺乏一些细节......

就像这样:

>>> import datetime
>>> datetime.timedelta(seconds=10) + datetime.timedelta(hours=5)
datetime.timedelta(0, 18010)

答案 3 :(得分:0)

我很确定通过“sum”他意味着他想要原始类型(例如整数)中的和的值而不是日期时间对象。

请注意,您始终可以使用dir函数来反映对象,并返回其方法和属性的列表。

>>> import datetime
>>> time_sum=datetime.timedelta(seconds=10) + datetime.timedelta(hours=5)
>>> time_sum
datetime.timedelta(0, 18010)
>>> dir(time_sum)
['__abs__', '__add__', '__class__', '__delattr__', '__div__', '__doc__', '__eq__', '__floordiv__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__mul__', '__ne__', '__neg__', '__new__', '__nonzero__', '__pos__', '__radd__', '__rdiv__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rmul__', '__rsub__', '__setattr__', '__str__', '__sub__', 'days', 'max', 'microseconds', 'min', 'resolution', 'seconds']

所以在这种情况下,看起来我们可能想要秒。

>>> time_sum.seconds
18010

对我而言:

>>> 5*60*60 + 10
18010

答案 4 :(得分:0)

编辑:假设“sum timedelta”是指“将timedelta转换为int秒”。)

效率非常低,但很简单:

int((datetime.datetime.fromtimestamp(0) + myTimeDelta).strftime("%s"))

这会将Unix时间戳(0)转换为日期时间对象,将增量添加到其中,然后转换回Unix时间。由于Unix时间计算秒数,这是你的timedelta代表的秒数。

答案 5 :(得分:0)

如果您有一个timedelta对象列表,则可以尝试:

datetime.timedelta(seconds = sum(list_of_deltas中td的总和(td.total_seconds()))