3

假设我有这些数据时间变量:

start_time, end_time, current_time

我想通过检查和之间的current_time时间增量来了解剩余时间百分比start_timeend_time

IE: 假设 start_time 和 end_time 之间的间隔是 24 小时current_timeend_time,还有 6 小时要完成,应该剩下 %25 。

如何才能做到这一点 ?

4

3 回答 3

3

这是一个骇人听闻的解决方法:使用 、 和 字段计算两个值之间的总days微秒secondsmicroseconds。然后除以间隔中的总微秒数。

于 2010-03-22T01:23:08.960 回答
3

在 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 相除。)

于 2012-10-16T20:18:06.490 回答
1

可能最简单:

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
于 2010-03-22T01:46:33.243 回答