Проблема с timedelta в Python с отрицательными значениями

Привет, мне нужна помощь, чтобы понять, почему это происходит. У меня есть способ отслеживать «оставшееся время» в программе событий:

def get_program_time_budget(self):
    return self.estimated_duration-self.get_program_duration() 

Все в порядке, когда оцениваемая_длительность> self.get_program_duration (), но когда это происходит наоборот, все становится забавным.

Результаты отображаются пользователю:

Estimated   11 hours    Allocated       10 hours 55 minutes     Remaining       5 minutes

Когда результат становится отрицательным, он делает следующее:

Estimated   11 hours    Allocated       11 hours 5 minutes  Remaining       -1 day 23 hours 55 minutes

Есть идеи, как получить результат -5 минут?

РЕДАКТИРОВАТЬ: Вот форматтер timedelta (обратите внимание, что это фильтр Django, поэтому он получает значение timedelta как str, но сохраняется как timedelta):

def format_duration(value):
  try:
    delim = ':'
    toks = value.split(',')
    hour = minute = ''
    d_string = value.count('day') and toks[0] or ''
    h, m, s = d_string and toks[-1].strip().split(delim) or value.split(delim)
    try:
        hour = int(h)
    except:
        pass
    try:
        minute = int(m)
    except:
        pass  
    h_string = "%s%s%s" % (hour and hour or '', (hour and ' hour' or ''),(hour and hour > 1 and 's' or '')  )
    m_string = "%s%s%s" % (minute and minute or '', (minute and ' minute' or ''),(minute and minute > 1 and 's' or ''))
    return "%s %s %s" % (d_string, h_string, m_string)
  except Exception, e:
    logging.error("Error in format_duration -> %s. Duration value=%s" % (e, value))
    return ''v 
30
задан Drew Nichols 7 December 2011 в 00:50
поделиться