回答
日期时间组合方法允许您将时间与增量组合在一起
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)
>>>
结合您可以阅读datetime模块文档,并在
要添加timedeltas你可以使用内置的运营商+
:
result = timedelta1 + timedelta2
增添了不少timedeltas,你可以用和:
result = sum(timedeltas, datetime.timedelta())
或减少:
import operator
result = reduce(operator.add, timedeltas)
嗯,我希望sum函数也能工作,但它在2.7.3上似乎不适合我。以下失败:''sum([datetime.timedelta(1),datetime.timedelta(0,14700)])''。 – pelson 2012-11-29 11:44:07
@pelson:你错过了第二个参数。 'sum([datetime.timedelta(1),datetime.timedelta(0,14700)],datetime.timedelta())给出'datetime.timedelta(1,14700)'。 – 2012-11-29 12:09:40
很酷。谢谢@Mark_Byers,我确实错过了! – pelson 2012-11-29 17:15:36
一个非常好的简单介绍由于这个“正常工作”,我认为这个问题缺乏一些细节...
就像这样:
>>> import datetime
>>> datetime.timedelta(seconds=10) + datetime.timedelta(hours=5)
datetime.timedelta(0, 18010)
我敢肯定的是,“和”他的意思是他要的总和的基本类型(例如整数),而不是一个DateTime对象的值。
请注意,您始终可以使用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
这对于'days'组件的timedeltas不起作用:'datetime.timedelta(days = 3,hours = 5,seconds = 10).seconds - > 18010'。它应该是277210s((3 * 24 * 60 * 60)+(5 * 60 * 60)+ 10)。 – RobM 2011-01-18 16:48:08
更好的解决方案:'time_sum.total_seconds()' (包括从天部件以及秒) http://docs.python.org/2/library/datetime.html#datetime.timedelta.total_seconds – balleyne 2013-01-10 06:03:20
(编辑:假设由 “总和timedelta” 你的意思是 “转换timedelta为int秒”。)
这是效率很低,但很简单:
int((datetime.datetime.fromtimestamp(0) + myTimeDelta).strftime("%s"))
这将转换Unix时间戳(0
)转换为日期时间对象,将其添加到它,然后转换回Unix时间。由于Unix时间计数秒,这是timedelta表示的秒数。
这完全不相关的问题。 – SilentGhost 2011-01-18 16:55:19
不一定。我分享了Goladus的解释 - user469652想要将timedelta的组件总和为单个基本类型,例如秒。当我发现这个问题时,这当然是我正在寻找的东西。 – RobM 2011-01-18 17:05:57
更好的解决方案:'myTimeDelta.total_seconds()' http://docs.python.org/2/library/datetime.html#datetime.timedelta.total_seconds – balleyne 2013-01-10 06:04:51
- 1. 如何在Python中获得多个数字的总和
- 2. 如何计算timedelta python
- 3. Python:获得Lambda函数的总和
- 4. 如何从timedelta获取值?
- 5. 如何获得每月的总和?
- 6. 如何获得一列的总和
- 7. 如何获得总和的最大值?
- 8. mysqli_fetch_object - 如何获得值的总和
- 9. 如何获得mysql的时间总和?
- 10. 如何获得jqgrid列的总和
- 11. 如何获得multidiamesional阵列的总和
- 12. 如何获得值的总和在MySQL
- 13. 如何获得具有总和的列
- 14. 如何使用python获得MD5字符串的总和?
- 15. 的Python 2.6.5:除以timedelta与timedelta
- 16. python排序timedelta
- 17. 如何获得总数和利用API
- 18. 如何获得总和(组)RDLC
- 19. MySQL如何获得项目总和
- 20. 如何获得Python中范围函数中所有数字的总和?
- 21. SQL-如何获得和列中的每个总和列
- 22. 获得总笔数的总和PostgreSQL的
- 23. 获得列的总和
- 24. 如何获得与条件在Python中元素列表的总和?
- 25. 如何获得总时间?
- 26. 如何获得总数?
- 27. CoreData:如何获得总数
- 28. 获得的值的总和Linq中
- 29. 如何在yii中获得mysql中列的总和
- 30. 如何获得jqgrid中的文本框的列的总和
?????不明白这个问题。你有配方吗? – Phong 2010-10-29 07:27:03
如果你有很多整数对象,你想做什么?你有什么尝试?当你尝试时发生了什么? – 2010-10-29 09:17:14
我的猜测是,如果你有tds = [timedelta(),timedelta(),timedelta(),...],他想知道如何做sum(tds)。这是不可能的,因为sum类型从0开始,因此尝试执行0 + timedelta()。你当然可以用一些基本的循环duration = timedelta(0);对td tds:持续时间+ = td – orzel 2017-06-07 14:55:08