Python,datetime“时间间隔”百分比

3 投票
3 回答
4049 浏览
提问于 2025-04-15 20:41

假设我有这些时间变量:

start_time, end_time, current_time

我想知道剩下的时间占总时间的百分比,可以通过比较current_timestart_timeend_time之间的时间差来实现。

举个例子:假设从start_timeend_time的时间间隔是24小时,而从current_timeend_time之间还有6小时,那么剩下的时间就是25%。

这个怎么实现呢?

3 个回答

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
3

这里有个简单的解决办法:先计算两个数值之间的总微秒数,方法是使用days(天)、seconds(秒)和microseconds(微秒)这几个字段。然后,把这个总微秒数除以这个时间段内的总微秒数。

3

在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: 用时间差除以时间差的讨论中也有提到。)

撰写回答