3 votes

Il manque datetime.time.__sub__ ?

Pourquoi ne peut-on pas soustraire deux objets temporels ? Par exemple, 12:00 - 11:00 = 1:00

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

Il semble que datetime.time.__sub__ est absent

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

Vous savez pourquoi ?

6voto

Alex Martelli Points 330805

El time n'ont pas de date, donc par exemple, l'objet 12:00 pourrait se trouver (disons) sur un Mer et le 11:00 le mardi précédent, ce qui fait que la différence est de 25 heures et non d'une (tout multiple de 24 peut être ajouté ou soustrait). Si vous savez qu'ils sont en fait à la même date, il suffit d'appliquer n'importe quelle date arbitraire à chacun d'eux (ce qui donne deux heures de différence). datetime ) et puis tu pourras les soustraire. Par exemple :

import datetime

def timediff(t1, t2):
  td = datetime.date.today()
  return datetime.datetime.combine(td, t1) - datetime.datetime.combine(td, t2)

0voto

Tor Valamo Points 14209

Vous pouvez obtenir le résultat souhaité en

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X