Python中timedelta对象的百分比?

时间:2013-05-26 08:36:56

标签: python datetime timedelta

我正在研究高级计时和时间统计应用程序。我正在使用Python timedelta对象来表示应用程序中的时间跨度。

我想弄清楚的是,是否有办法表示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给出的时间跨度相对于另一个时间delta作为float的百分比:

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对象进行操作。我不确定是否可以这样做。那么,可以做到,如果没有,是否有更好的替代方案呢?

1 个答案:

答案 0 :(得分:5)

您可以使用timedelta获取.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