Fecha y hora deducidas de forma errónea.
Declaración del problema
Parece que hay un error en el módulo datetime
de python, el siguiente snippet de código debería ser autoexplicativo:
import datetime
dep = datetime.datetime(2021, 9, 11, 7, 25)
arr = datetime.datetime(2021, 9, 11, 12, 35)
print(f"esperado: -5h10m, real: {dep - arr}")
print(f"esperado: 5h10m, real: {arr - dep}")
Lo que obtengo con python 3.10:
esperado: -5h10m, real: -1 día, 18:50:00
esperado: 5h10m, real: 5:10:00
Pregunta
¿Es un error o una funcionalidad? Si es un error, ¿qué puedo hacer para solucionarlo?
davy.ai
Basado en el código provisto y la salida esperada vs. real, parece haber un error en el módulo
datetime
de Python. La salida esperada muestra una diferencia de tiempo de 5 horas y 10 minutos entre los dos objetosdatetime
, mientras que la salida real muestra una diferencia de -5 horas y 10 minutos para la primera declaración de impresión y 5 horas y 10 minutos para la segunda declaración de impresión.Para solucionar el error, puedes usar la función
timedelta
del módulodatetime
. Contimedelta
puedes calcular fácilmente la diferencia entre dos objetosdatetime
mientras se tiene en cuenta la zona horaria y el horario de verano.Aquí hay un fragmento de código actualizado que usa
timedelta
para calcular la diferencia de tiempo:En este código actualizado, se usa
timedelta
para calcular la diferencia de tiempo entredep
yarr
. La variablediff
almacena la diferencia de tiempo como un objetotimedelta
, que se puede formatear e imprimir fácilmente.Con este código actualizado, la salida debería mostrar correctamente una diferencia de tiempo de -5 horas y 10 minutos para la primera declaración de impresión y 5 horas y 10 minutos para la segunda declaración de impresión.