Отсутствует datetime.time .__ sub__? - PullRequest
3 голосов
/ 17 января 2010

Почему нельзя вычесть два временных объекта? Например, 12:00 - 11:00 = 1: 00


from datetime import time
time(12,00) - time(11,00) # -> timedelta(hours=1)

Кажется, что datetime.time.__sub__ отсутствует

TypeError: unsupported operand type(s) for -: 'datetime.time' and 'datetime.time'

ты знаешь почему?

Ответы [ 2 ]

6 голосов
/ 17 января 2010

Объекты time не имеют даты, поэтому, например, 12:00 может быть (скажем) на Ср и 11:00 на предыдущем Вт, что делает разницу 25 часов, а не один (любой кратный 24 могут быть добавлены или вычтены). Если вы знаете, что они на самом деле в одну и ту же дату, просто примените любую произвольную дату к каждой из них (делая два datetime объекта) и , тогда вы сможете вычесть их. E.g.:

import datetime

def timediff(t1, t2):
  td = datetime.date.today()
  return datetime.datetime.combine(td, t1) - datetime.datetime.combine(td, t2)
0 голосов
/ 17 января 2010

Вы можете получить желаемый результат по

t1 = time(12, 0)
t2 = time(11, 0)
td = timedelta(hours=t1.hour-t2.hour, minutes=t1.minute-t2.minute)
...