2013-05-26 56 views
3

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

我想弄明白的是,如果有一种方法来表示timedelta对象的任意分数。

timedelta提供的运算符只允许使用整数。你可以用一个整数乘以一个timedelta,你可以用一个整数来划分它,但是你不能用float来做。

我希望能够做两件事情:

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给出关于另一个时间增量为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对象。我不确定这是否可以完成。那么,能否做到,如果没有,是否有更好的选择呢?

回答

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 
+2

在python3中,您可以直接使用浮点数对timedelta对象进行操作,也可以对两个timedelta对象进行操作来获得浮点数。 – Zac