'''
Solicita al usuario dos horas como números enteros con forma hhmmss, e informa la diferencia entre ellas en horas, minutos y segundos.
Si la segunda hora es menor que la primera, se asume que la segunda hora es de un día posterior (la diferencia puede ser de hasta 36
horas).

Versión 1: convierte las horas a números fraccionarios para facilitar la aritmética

Casos de análisis:
1- 190511 y 210512 --> 21/24 + 5/(24*60) + 12/(24*60*60) - 19/24 - 5/(24*60) - 11/(24*60*60) = 0,0833449074074
   0,0833449074074 * 24 = 2,0002777777776
   0,0002777777776 * 60 = 0,016666666656
   0,016666666656 * 60 = 0,99999999936 --> 1
   2 horas 1 segundo
   

2- 210512 y 190511 --> 24/24 - 21/24 - 5/(24*60) - 12/(24*60*60) + 19/24 + 5/(24*60) + 11/(24*60*60) = 0,9166550925925
   0,9166550925925 * 24 = 21,9997222
   0,9997222 * 60 = 59,98333
   59,98333 * 60 = 59
   21 horas 59 minutos 59 segundos


'''
# PRÓLOGO
print('DIFERENCIA ENTRE DOS HORAS')
print()
print('Se solicitan dos horas distintas con formato hhmmss')
print('Si la primera es mayor que la segunda se asume que la segunda corresponde al día siguiente')
print()

# Ingreso de datos por teclado
horaEntera1 = int(input('Ingrese primer hora: '))
horaEntera2 = int(input('Ingrese segunda hora: '))

# Inicializaciones
# convertir fechas enteras a fechas fraccionarias horaFrac1 y horaFrac2
hh1=horaEntera1//10000
mm1=(horaEntera1%10000)//100
ss1=horaEntera1%100
horaFrac1=hh1/24.0 + mm1/(24.0*60.0) + ss1/(24.0*3600.0)

hh2=horaEntera2//10000
mm2=(horaEntera2%10000)//100
ss2=horaEntera2%100
horaFrac2=hh2/24.0 + mm2/(24.0*60.0) + ss2/(24.0*3600.0)

# RESOLUCIÓN
# Obtención de la diferencia
if horaFrac2 < horaFrac1: resultado=1.0-horaFrac1+horaFrac2 # 1.0 EQUIVALE A 24.0/24.0
else: resultado=horaFrac2-horaFrac1

# Obtención de horas, minutos y segundos enteros a partir de la diferencia fraccionaria
horasFrac=resultado*24.0
horas=int(horasFrac) # la diferencia de horas es la parte entera de resultado
minutosFrac=(horasFrac-horas)*60.0
minutos=int(minutosFrac) # minutos enteros
segundosFrac=(minutosFrac-minutos)*60.0
segundos=round(segundosFrac) # segundos enteros con redondeo en vez de tomar parte entera (puede haber redondeo a 60)
if segundos==60:
    segundos=0
    if minutos==59:
        minutos=0
        horas+=1
    else: minutos+=1

# EPÍLOGO
print('La diferencia es:')
if horas>0:
    if horas>1: print(horas, 'horas', end=' ')
    else: print(horas, 'hora', end=' ') # el parámetro end=' ' reemplaza el salto de línea por defecto de la función print por la impresión de un espacio
if minutos>0:
    if minutos>1: print(minutos, 'minutos', end=' ')
    else: print(minutos, 'minuto', end=' ')
if segundos>0:
    if segundos>1: print(segundos, 'segundos')
    else: print(segundos, 'segundo')

'''
PRUEBAS
============= RESTART: Escritorio\horas.py =============
DIFERENCIA ENTRE DOS HORAS

Se solicitan dos horas distintas con formato hhmmss
Si la primera es mayor que la segunda se asume que la segunda corresponde al día siguiente

Ingrese primer hora: 092214
Ingrese segunda hora: 102312
La diferencia es:
1 hora 58 segundos
>>> 
============= RESTART: Escritorio\horas.py =============
DIFERENCIA ENTRE DOS HORAS

Se solicitan dos horas distintas con formato hhmmss
Si la primera es mayor que la segunda se asume que la segunda corresponde al día siguiente

Ingrese primer hora: 092214
Ingrese segunda hora: 102115
La diferencia es:
59 minutos 1 segundo
>>> 
============= RESTART: Escritorio\horas.py =============
DIFERENCIA ENTRE DOS HORAS

Se solicitan dos horas distintas con formato hhmmss
Si la primera es mayor que la segunda se asume que la segunda corresponde al día siguiente

Ingrese primer hora: 150833
Ingrese segunda hora: 071258
La diferencia es:
16 horas 4 minutos 25 segundos
>>>
'''
print()
input('Pulse Enter para terminar.')
