假设我有这些数据时间变量:
start_time, end_time, current_time
我想通过检查和之间的current_time
时间增量来了解剩余时间百分比start_time
end_time
IE: 假设 start_time 和 end_time 之间的间隔是 24 小时current_time
和end_time
,还有 6 小时要完成,应该剩下 %25 。
如何才能做到这一点 ?
这是一个骇人听闻的解决方法:使用 、 和 字段计算两个值之间的总days
微秒seconds
数microseconds
。然后除以间隔中的总微秒数。
在 Python 2.7.x 中,time delta 有一个方法 total_seconds 来实现:
import datetime
startTime = datetime.datetime.now() - datetime.timedelta(hours=2)
endTime = datetime.datetime.now() + datetime.timedelta(hours=4)
rest = endTime - datetime.datetime.now()
total = endTime - startTime
print "left: {:.2%}".format(rest.total_seconds()/total.total_seconds())
在 Python 3.2 中,您显然可以直接划分时间增量(无需通过 total_seconds)。
(这在 Python 2.6.5 中也有说明:将 timedelta 与 timedelta 相除。)
可能最简单:
import time
def t(dt):
return time.mktime(dt.timetuple())
def percent(start_time, end_time, current_time):
total = t(end_time) - t(start_time)
current = t(current_time) - t(start_time)
return (100.0 * current) / total