Tengo dos datetime.time
valores, exit
y enter
y 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 time
variables en datetime
variables 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()
.datetime
exit
, ya queexit
es una función incorporada.combine
método en midatetime
módulo:AttributeError: 'module' object has no attribute 'combine'
datetime
módulo y tiene undatetime
objeto dentro. El objeto dentro tienecombine
mé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.min
es 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.time
no admite esto, porque no tiene sentido restar tiempos de esta manera. Utilice un completodatetime.datetime
si desea hacer esto.fuente
datetime.time
objetosa
yb
son del mismo día, y esob > a
, entonces la operaciónb - a
tiene 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:00
es8: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 + delta
La biblioteca de python timedelta debería hacer lo que necesita. Se
timedelta
devuelve A cuando resta dosdatetime
instancias.fuente
fuente
datetime.time
no 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