Python,日期时间“时间间隔”百分比

时间:2010-03-22 01:17:59

标签: python datetime timedelta

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

start_time, end_time, current_time

我想通过查看current_timestart_timeend_time

之间的时间差来了解剩余的时间百分比

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

如何做到这一点?

3 个答案:

答案 0 :(得分:3)

这是一个hackish变通方法:使用dayssecondsmicroseconds字段计算两个值之间的微秒总数。然后除以间隔中的总微秒数。

答案 1 :(得分:2)

在Python 2.7.x中,时间增量有一个方法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: Divide timedelta with timedelta中也注明了这一点。)

答案 2 :(得分: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