Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中timedelta对象的百分比?_Python_Datetime_Timedelta - Fatal编程技术网

Python中timedelta对象的百分比?

Python中timedelta对象的百分比?,python,datetime,timedelta,Python,Datetime,Timedelta,我正在开发一个高级计时和时间统计应用程序。我使用Pythontimedelta对象来表示应用程序中的时间跨度 我想弄清楚的是,是否有一种方法可以表示timedelta对象的任意部分 为timedelta提供的运算符仅允许使用整数。您可以将时间增量乘以整数,也可以将其除以整数,但使用浮点数两者都不能 我想做两件事: 1:给定一个timedelta对象,计算它的任意百分比。换句话说,乘或除浮点数的能力: from datetime import timedelta import math td =

我正在开发一个高级计时和时间统计应用程序。我使用Python
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给定的时间跨度相对于另一个timedelta的百分比作为浮点:

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对象。我不确定这是否能做到。那么,可以这样做吗?如果不可以,还有更好的替代方法吗?

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

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

在python3中,您可以使用浮点直接对timedelta对象进行操作,或者分割两个timedelta对象以获得一个浮点。