Python, процент времени и времени в процентах - PullRequest
3 голосов
/ 22 марта 2010

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

start_time, end_time, current_time

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

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

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

Ответы [ 3 ]

3 голосов
/ 22 марта 2010

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

2 голосов
/ 17 октября 2012

В 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 .)

1 голос
/ 22 марта 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
...