3

我正在开发一个高级计时和时间统计应用程序。我正在使用 Pythontimedelta对象来表示应用程序中的时间跨度。

我想弄清楚是否有一种方法可以表示 timedelta 对象的任意部分。

为 timedelta 提供的运算符仅允许使用整数。您可以将 timedelta 乘以一个整数,也可以将其除以一个整数,但浮点数都不能。

我希望能够做两件事:

1:给定一个 timedelta 对象,找出它的任意百分比。换句话说,乘以或除以浮点数的能力:

from datetime import timedelta
import math
td = timedelta(1)
newTd = td * 0.01 # 1% of the time delta specified in td
newTd = td * 1.04 # 104% of the time delta given in td
newTd = td * math.pi # the timedelta multiplied by pi (lol) 

2:给定两个 timedelta 对象,计算一个 timedelta 给出的时间跨度相对于另一个 time delta 作为浮点数的百分比:

from datetime import timedelta
td1 = timedelta(1)
td2 = timedelta(2)
td1 / td2 # should give me 0.5
td2 = timedelta(days=4, minutes=50)
td1 / td2 # not sure what this would result in, but, the percentage of time 1 day fills out of 4 days and 50 minutes of time

这两个都要求我能够使用浮点数对 timedelta 对象进行操作。我不确定这是否可以做到。那么,可以做到吗,如果没有,是否有更好的选择?

4

1 回答 1

6

timedelta您可以从with获取秒数.total_seconds()并使用它。

>>> from datetime import timedelta
>>> td1 = timedelta(1)
>>> td2 = timedelta(2)
>>> td1.total_seconds() / td2.total_seconds() # should give me 0.5
0.5
>>> td2 = timedelta(days=4, minutes=50)
>>> td1.total_seconds() / td2.total_seconds()
0.24784853700516352
于 2013-05-26T09:19:35.927 回答