python - Python 中 timedelta 对象的百分比?

标签 python datetime timedelta

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

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

为 timedelta 提供的运算符只允许使用整数。您可以将 timedelta 乘以一个整数,也可以将它除以一个整数,但您不能用 float 做任何事情。

我希望能够做两件事:

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

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 给出的时间跨度的百分比作为 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

这两者都要求我能够使用 float 对 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

关于python - Python 中 timedelta 对象的百分比?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16757537/

相关文章:

python - 使 python 代码兼容 2.7 和 3.6+ 版本 - 关于队列模块

python - Pandas ;将 MM :SS, 小数列转换为秒数

Python:如何在我的时间序列中删除每天的前 5 分钟?

python - 对数据进行排序并应用 groupby 后查找最大时间增量

python - 在 python 中使用 "With open"写入另一个目录

python - 奇数字符追加到Python列表的前面

datetime - 绘制日期时间

python - 如何使用numpy中的转换器将时间字符串更改为数字

Python - 用于在列表中查找日期的正则表达式

Python 中 pandas 的时差