Python, процент разрыва даты и времени

Предположим, у меня есть эти переменные datatime:

start_time, end_time, current_time

Я хотел бы узнать, сколько времени осталось в процентах, проверив current_time и разницу во времени между start_time и end_time

IE: предположим, что интервал между start_time и end_time составляет 24 часа, но между current_time и end_time осталось 6 часов до завершения, должно остаться %25.

Как это может быть сделано ?


person Hellnar    schedule 22.03.2010    source источник


Ответы (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: разделите timedelta на timedelta. .)

person Hans    schedule 16.10.2012

Вот хакерский обходной путь: вычислите общее количество микросекунд между двумя значениями, используя поля days, seconds и microseconds. Затем разделите на общее количество микросекунд в интервале.

person avpx    schedule 22.03.2010

Возможно самое простое:

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
person Alex Martelli    schedule 22.03.2010