Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #tupla de meses y dias validos
- meses=(
- 31,
- 28,
- 31,
- 30,
- 31,
- 30,
- 31,
- 31,
- 30,
- 31,
- 30,
- 31
- )
- #Validador de fecha
- #Nota: considerar cantidad de dias reales de cada mes
- #Nota1: no se contempla ajuste por año biciesto
- def validador():
- r = -2
- cond = True
- while cond == True:
- a = int(input('\nAño (aaaa): '))
- if a>0:
- m = int(input('\nMes (mm): '))
- if m>0 and m<13:
- d = int(input('\nDia (dd): '))
- if d<=meses[m-1]:
- print('\nLa fecha '+str(d)+'/'+str(m)+'/'+str(a)+' es valida.')
- r = [d,m,a]
- cond=False
- else:
- r = -1
- print('\nDia invalido')
- else:
- r = -1
- print('\nMes invalido')
- else:
- r = -1
- print('\nAño invalido')
- return r
- #Calculador de diferencia de dias entre dos fechas
- def difEnDias(f1, f2):
- #posicionando la fecha mas anterior en primer lugar
- if f1[2]>f2[2]:
- aux=f1
- f1=f2
- f2=aux
- elif f1[2]==f2[2]:
- if f1[1]>f2[1]:
- aux=f1
- f1=f2
- f2=aux
- elif f1[1]==f2[1]:
- if f1[0]>f2[0]:
- aux=f1
- f1=f2
- f2=aux
- d=0
- #dias por mes por agno transcurrido ↓ (cuando los agnos son iguales)
- if f1[2]==f2[2]:
- if f1[1]==f2[1]:
- d+=(f2[0]-f1[0])
- else:
- for m in range(f1[1], f2[1]+1, +1):
- if m==f1[1]:
- d+=(meses[m-1])-f1[0] #ajuste de dias, del mes mas anterior
- elif m==f2[1]:
- d+=f2[0] #ajuste de dias, del mes mas posterior
- elif f1[1]<m<f2[1]:
- d+=meses[m-1] #suma de dias de los meses transcurridos por completo
- else:
- #dias por mes por agno transcurrido ↓ (cuando los agnos son diferentes)
- for a in range(f1[2], f2[2]+1, +1):
- for m in range(len(meses)):
- if a==f1[2] and m==f1[1]:
- d+=(meses[m-1])-f1[0] #ajuste de dias, del mes mas anterior
- elif a==f2[2] and m==f2[1]:
- d+=f2[0] #ajuste de dias, del mes mas posterior
- elif a<(f1[2]+1) and m>f1[1]:
- d+=meses[m-1] #suma de dias de los meses transcurridos por completo
- elif f2[2]>a>f1[2]:
- d+=meses[m-1] #suma de dias de los meses transcurridos por completo
- elif a>=f2[2] and m<f2[1]:
- d+=meses[m-1] #suma de dias de los meses transcurridos por completo
- return d
- #main
- print('|Diferencia de dias entre fechas|')
- cond = True
- while cond==True:
- opc = int(input('\nOpciones\n\n1. Calcular\n0. Salir\n\n<opcion>: '))
- if opc == 0:
- print('\nFin de la ejecucion!\n')
- cond = False
- elif opc == 1:
- print('\nValores de fecha 1:')
- fecha1 = validador()
- if fecha1 == -2:
- continue
- elif fecha1 == -1:
- print('\nError: Ingrese una fecha valida!\n')
- else:
- print('\nValores de fecha 2:')
- fecha2 = validador()
- if fecha2 == -2:
- continue
- elif fecha2 == -1:
- print('\nError: Ingrese una fecha valida!\n')
- else:
- dif = difEnDias(fecha1, fecha2)
- if dif<0:
- dif*=(-1)
- print('\nHay '+str(dif)+' dias de diferencia entre las fechas!')
- else:
- print('\nOpcion no valida!\n')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement