Diferencias de tiempo de Python

Tengo dos objetos de tiempo.

Ejemplo

time.struct_time(tm_year=2010, tm_mon=9, tm_mday=24, tm_hour=19, tm_min=13, tm_sec=37, tm_wday=4, tm_yday=267, tm_isdst=-1) time.struct_time(tm_year=2010, tm_mon=9, tm_mday=25, tm_hour=13, tm_min=7, tm_sec=25, tm_wday=5, tm_yday=268, tm_isdst=-1) 

Quiero tener la diferencia de esos dos. ¿Cómo podría hacer eso? Solo necesito minutos y segundos, así como la duración de esos dos.

Time instancias de Time no soportan la operación de resta. Dado que una forma de resolver esto sería convertir el tiempo a segundos desde la época y luego encontrar la diferencia, use:

 >>> t1 = time.localtime() >>> t1 time.struct_time(tm_year=2010, tm_mon=10, tm_mday=13, tm_hour=10, tm_min=12, tm_sec=27, tm_wday=2, tm_yday=286, tm_isdst=0) >>> t2 = time.gmtime() >>> t2 time.struct_time(tm_year=2010, tm_mon=10, tm_mday=13, tm_hour=4, tm_min=42, tm_sec=37, tm_wday=2, tm_yday=286, tm_isdst=0) >>> (time.mktime(t1) - time.mktime(t2)) / 60 329.83333333333331 
 >>> t1 = time.mktime(time.strptime("10 Oct 10", "%d %b %y")) >>> t2 = time.mktime(time.strptime("15 Oct 10", "%d %b %y")) >>> print(datetime.timedelta(seconds=t2-t1)) 5 days, 0:00:00 

Puede usar time.mktime(t) con el objeto struct_time (pasado como “t”) para convertirlo en un valor de punto flotante de “segundos desde la época”. Luego puedes restar esos para obtener la diferencia en segundos y dividir por 60 para obtener la diferencia en minutos.

Hay otra forma de encontrar la diferencia horaria entre dos fechas (no mejor que la solución anterior, supongo):

  >>> import datetime >>> dt1 = datetime.datetime.strptime("10 Oct 10", "%d %b %y") >>> dt2 = datetime.datetime.strptime("15 Oct 10", "%d %b %y") >>> (dt2 - dt1).days 5 >>> (dt2 - dt1).seconds 0 >>> 

Dará la diferencia en días o segundos o combinación de eso. El tipo para (dt2 – dt1) es datetime.timedelta. Busque en la biblioteca para más detalles.