2010-03-22 4 views
3

Предположим, у меня есть эти datatime переменные:Python, даты и времени «промежуток времени» процент

start_time, end_time, current_time 

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

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

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

ответ

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

3

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

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 
Смежные вопросы