python中带浮点的Timedelta乘法
我有两个日期,可以像往常一样计算时间差 但我想用得到的时间增量计算一些百分比:python中带浮点的Timedelta乘法,python,datetime,multiplication,timedelta,Python,Datetime,Multiplication,Timedelta,我有两个日期,可以像往常一样计算时间差 但我想用得到的时间增量计算一些百分比: full_time = (100/percentage) * timdelta 但它似乎只能与区间相乘 如何使用float而不是int作为乘数 例如: percentage = 43.27 passed_time = fromtimestamp(fileinfo.st_mtime) - fromtimestamp(fileinfo.st_ctime) multiplier = 100 / pe
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(乘数),则精度会受到影响。您可以使用:
您可以转换为总秒数,然后再次转换:
full_time = timedelta(seconds=multiplier * passed_time.total_seconds())
可从Python 2.7获得;在早期版本上使用
def timedelta_total_seconds(td):
return (td.microseconds + (td.seconds + td.days * 24 * 3600) * 10**6) / float(10**6)
你是对的,timedelta只支持整数的乘法或除法,但是为什么不一步一步地按顺序执行数学运算呢<代码>完整时间=通过时间*100/int(百分比)@Colin O'Coal,因为准确性:
2!=2.3131
。比较:571*2=1142
(19,03(3)分钟)<代码>571*2.3131=13207801(220130016(6)分钟)。差大约3分钟(!)谢谢!老实说,我忘记了timedelta
constructor。感谢您的“支持兼容性”)
def timedelta_total_seconds(td):
return (td.microseconds + (td.seconds + td.days * 24 * 3600) * 10**6) / float(10**6)