¿Cómo puedo saber la diferencia horaria en minutos entre dos datetime
objetos?
python
datetime
date-arithmetic
Hobhouse
fuente
fuente
delorean
tergiversacionesdatetime
,pytz
enfoque , por ejemplo, el ejemplo de código de inicio podría escribirse comod = datetime.now(timezone(EST))
(una línea legible en lugar de cinco).Nuevo en Python 2.7 es el
timedelta
método de instancia.total_seconds()
. De los documentos de Python, esto es equivalente a(td.microseconds + (td.seconds + td.days * 24 * 3600) * 10**6) / 10**6
.Referencia: http://docs.python.org/2/library/datetime.html#datetime.timedelta.total_seconds
fuente
elapsedTime / timedelta(minutes=1)
para obtener la diferencia en minutos en Python 3Usando el ejemplo de fecha y hora
Duración en años
Duración en dias
Duración en horas
Duración en minutos
Duración en segundos
Duración en microsegundos
Duración total entre las dos fechas.
o simplemente:
Editar 2019 Dado que esta respuesta ha ganado popularidad, agregaré una función que podría simplificar el uso para algunos
fuente
TypeError: 'float' object is not subscriptable
cuando uso para:then = datetime(2017, 8, 11, 15, 58, tzinfo=pytz.UTC)
now = datetime(2018, 8, 11, 15, 58, tzinfo=pytz.UTC)
getDuration(then, now, 'years')
Solo resta uno del otro. Obtienes un
timedelta
objeto con la diferencia.Puedes convertir
dd.days
,dd.seconds
ydd.microseconds
a minutos.fuente
Si
a
,b
son objetos de fecha y hora, entonces para encontrar la diferencia horaria entre ellos en Python 3:En versiones anteriores de Python:
Si
a
,b
son de fecha y hora ingenua objetos tales como devuelto pordatetime.now()
entonces el resultado puede ser errónea si los objetos representan el tiempo local con diferentes UTC compensaciones por ejemplo, alrededor de las transiciones de horario de verano o para fechas / futuras pasadas. Más detalles: Encuentre si han pasado 24 horas entre fechas y horas - Python .Para obtener resultados confiables, use la hora UTC o los objetos datetime con reconocimiento de zona horaria.
fuente
Use divmod:
fuente
Así es como obtengo la cantidad de horas que transcurrieron entre dos objetos datetime.datetime:
fuente
timedelta.seconds
solo da el número de segundos almacenados explícitamente , que la documentación garantiza que sumarán menos de un día. Desea(after - before).total_seconds()
, lo que da la cantidad de segundos que abarcan todo el delta.(after - before).total_seconds() // 3600
(Python 2.7) o(after - before) // timedelta(seconds=3600)
(Python 3)Para encontrar el número de días: timedelta tiene un atributo 'days'. Simplemente puede consultar eso.
fuente
Solo pensé que podría ser útil mencionar el formato también en lo que respecta a timedelta. strptime () analiza una cadena que representa un tiempo de acuerdo con un formato.
Esto generará: 0: 05: 00.518000
fuente
Yo uso algo así:
fuente
return t1-t2
esto es para encontrar la diferencia entre la hora actual y las 9.30 a.m.
fuente
Este es mi enfoque usando mktime .
fuente
mktime()
espera la hora local como entrada. La hora local puede ser ambigua ymktime()
puede devolver una respuesta incorrecta en este caso. Utilice en sua - b
lugar (a, b - objetos de fecha y hora) .mktime()
es innecesario y a veces está mal. No lo uses en este caso.En otras formas de obtener la diferencia entre la fecha;
Entonces obtenga salida en Min.
Gracias
fuente
He utilizado las diferencias de tiempo para las pruebas de integración continua para verificar y mejorar mis funciones. Aquí hay un código simple si alguien lo necesita
Utilizando:
y tengo algo así en la salida del registro
fuente
Basado en la excelente respuesta de @Attaque , propongo una versión simplificada más corta de la calculadora de diferencia de fecha y hora:
Lo cambié para evitar declarar funciones repetitivas, eliminé el intervalo predeterminado de impresión bonita y agregué soporte para milisegundos, semanas y meses ISO (teniendo en cuenta que los meses son solo aproximados, en base a la suposición de que cada mes es igual a
365/12
).Que produce:
fuente