[英]Timedelta multiply with float in python
我有两个日期,可以照常计算timedelta。
但是我想用结果timedelta计算一些百分比:
full_time = (100/percentage) * timdelta
但它似乎只能与互联网相乘。
如何使用float
而不是int
作为乘数?
例:
percentage = 43.27
passed_time = fromtimestamp(fileinfo.st_mtime) - fromtimestamp(fileinfo.st_ctime)
multiplier = 100 / percentage # 2.3110700254217702796394730760342
full_time = multiplier * passed_time # BUG: here comes exception
estimated_time = full_time - passed_time
如果使用int(multiplier)
- 精度会受到影响。
您可以转换为总秒数,然后再转回:
full_time = timedelta(seconds=multiplier * passed_time.total_seconds())
timedelta.total_seconds
可从Python 2.7获得; 在早期版本中使用
def timedelta_total_seconds(td):
return (td.microseconds + (td.seconds + td.days * 24 * 3600) * 10**6) / float(10**6)
你可以使用total_seconds()
:
datetime.timedelta(seconds=datetime.timedelta(minutes=42).total_seconds() * 0.8)
# => datetime.timedelta(0, 2016)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.