Tengo dos datetime.timevalores, exity entery quiero hacer algo como:
duration = exit - enter
Sin embargo, obtengo este error:
TypeError: tipos de operandos no admitidos para -: 'datetime.time' y 'datetime.time
¿Cómo hago esto correctamente? Una posible solución es convertir las timevariables en datetimevariables y luego subestructurar, pero estoy seguro de que ustedes deben tener una forma mejor y más limpia.

datetime(1,1,1,0,0,0)lugar dedate.today().datetimeexit, ya queexites una función incorporada.combinemétodo en midatetimemódulo:AttributeError: 'module' object has no attribute 'combine'datetimemódulo y tiene undatetimeobjeto dentro. El objeto dentro tienecombinemétodo. Si simplemente está importandodatetime(así :)import datetime, lo que debe hacer más adelante es estodatetime.datetime.combine.date.today()antes ydate.today()después devolverán un valor diferente. Sería mejor darle el valordate.today()a una variable.Utilizar:
El uso
date.mines un poco más conciso y funciona incluso a medianoche.Este podría no ser el caso, ya
date.today()que podría devolver resultados inesperados si la primera llamada ocurre a las 23:59:59 y la siguiente a las 00:00:00.fuente
en lugar de usar el tiempo, intente timedelta:
fuente
datetime.timeno admite esto, porque no tiene sentido restar tiempos de esta manera. Utilice un completodatetime.datetimesi desea hacer esto.fuente
datetime.timeobjetosaybson del mismo día, y esob > a, entonces la operaciónb - atiene un significado perfecto.arctan(0) = (0, pi, 2pi, ...), pero simplemente no nos importa ninguno de esos valores después del primero. Por lo tanto,4:00 - 20:00es8:00- es también (32:00,56:00, ...), pero a quién le importa?Tiene dos objetos datetime.time, por lo que solo crea dos timedelta usando datetime.timedetla y luego reste como lo hace ahora usando el operando "-". A continuación se muestra la forma de ejemplo de restar dos veces sin usar datetime.
difference_delta es su diferencia que puede usar por sus razones.
fuente
datetime.min + deltaLa biblioteca de python timedelta debería hacer lo que necesita. Se
timedeltadevuelve A cuando resta dosdatetimeinstancias.fuente
fuente
datetime.timeno puedo hacerlo, pero podrías usardatetime.datetime.now()fuente
Tuve una situación similar a la tuya y terminé usando una biblioteca externa llamada flecha .
Así es como se ve:
fuente