2013-05-26 90 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