def dias_entre(f1, f2): if ((requerimiento_0.R0(f1) == True) and (requerimiento_0.R0(f2) == True)): # verificar el formato de las fechas if ( (requerimiento_2.R2(f1) == True) and (requerimiento_2.R2(f2) == True) ): # se comprueba de acuerdo al calendario gregoriano, el mes y los dias respectivos if (f1EsFechaMenor(f1, f2) != True): # si f1 no es menor, pasa a ser la menor temp = f2 f2 = f1 f1 = temp dias_meses = [ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ] # días de cada mes, en orden de izquierda a derecha diasTranscurridos = 0 nuevoF1 = list( f1) # convertir las tuplas en listas para editar valores nuevoF2 = list(f2) banderaBisiesto = False # validar el incremento del mes febrero en los años bisiestos cada 4 años while (sonFechasIguales(nuevoF1, nuevoF2) != True): # la idea es hacer f1 la misma fecha que f2 if ((nuevoF1[2] - 1) == dias_meses[nuevoF1[1] - 1] ): # si estoy en el ultimo dia - 1 del mes nuevoF1[2] = 1 # el dia inicia en 1 if (nuevoF1[1] < 12): # si no estoy en el numero de mes maximo nuevoF1[1] += 1 # se incrementa el mes en 1 else: nuevoF1[1] = 1 # pero si estoy en el mes 12 nuevoF1[0] += 1 # el mes empezará en 1 if ( requerimiento_1.R1(nuevoF1[0]) == True ): # si es año bisiesto se suma 1 al mes de febrero dias_meses[1] += 1 banderaBisiesto = True # el año siguiente disminuye 1 dia a febrero. elif ( banderaBisiesto != False ): # *Solo entra al condicional cuando un año atras hubo un bisiesto dias_meses[1] -= 1 banderaBisiesto = False nuevoF1[2] += 1 # se incrementa el dia en + 1 diasTranscurridos += 1 # cuenta global de los dias transcurridos return diasTranscurridos else: print( "Alguna fecha presenta valores incorrectos de acuerdo al calendario gregoriano" ) else: print("Alguna fecha presenta un error de formato")
def R3(dia_siguiente): anio = dia_siguiente[0] mes = dia_siguiente[1] dia = dia_siguiente[2] dias_meses = [ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ] #Los días que posee cada mes en orden de izquierda a derecha if (requerimiento_0.R0(dia_siguiente)): #Validar la tupla ingresada if (requerimiento_2.R2(dia_siguiente) ): # Se valida que sea una fecha válida if ( requerimiento_1.R1(anio) ): #Si es año bisiesto se cambia la cantidad de días de Febrero en la lista dias_meses[1] += 1 if (dia != dias_meses[mes - 1]): return (anio, mes, dia + 1) #Si el día no es el último del mes else: if (mes == 12): return (anio + 1, 1, 1 ) #Si es el último día del mes de diciembre else: return ( anio, mes + 1, 1 ) #Si es el último día del mes que no sea Febrero ni Diciembre else: return "No es una fecha válida" else: return "No es una fecha válida"
def dia_semana(fecha): if ( fecha[0] > 1582 ): #Se verifica que el año pertenezca al calendario Gregoriano(año>1582) if (requerimiento_2.R2(fecha)): #Se verifica que sea un fecha válida retorno = requerimiento_5.calcularDoomsday( fecha ) #Se calcula el día de la semana que es la fecha ingresada if (requerimiento_1.R1(fecha[0]) and fecha[1] == 2): #Se verifica si el año es bisiesto if retorno == 0: #Si es año bisiesto y "retorno=0" retorna el 6 para indicar que es sábado return 6 else: #Si es año bisiesto y "retorno!=0" se resta 1 a la variable "retorno" retorno -= 1 return retorno else: return "La fecha ingresada no es válida" else: return "El año no pertenece al claendario Gregoriano. Debe ser mayor a 1582"
def fecha_futura(tupla, dias): # Se asume el formato: (año, mes, día) dias_meses = [ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ] #Los días que posee cada mes en orden de izquierda a derecha anioTupla = tupla[0] mesTupla = tupla[1] diaTupla = tupla[2] if (requerimiento_0.R0(tupla)): #Validar la tupla ingresada if (requerimiento_2.R2(tupla)): # Se valida que sea una fecha válida if ((type(dias) is int) and dias > 0): # Validar que sea un número natural positivo if ( requerimiento_1.R1(anioTupla) ): #Si es año bisiesto se cambia la cantidad de días de Febrero en la lista dias_meses[1] += 1 if (diaTupla <= dias_meses[mesTupla - 1] - dias): return (anioTupla, mesTupla, diaTupla + dias ) #Si el día no es el último del mes else: diaNuevo = diaTupla + dias #Dia incrementado para la nueva fecha indiceMes = mesTupla - 1 # Mes actual anioNuevo = anioTupla # Año actual while (diaNuevo > dias_meses[indiceMes]): diaNuevo -= dias_meses[ indiceMes] # Restar los días de cada mes indiceMes += 1 if (indiceMes == 12): indiceMes = 0 anioNuevo += 1 if (mesTupla == 12): return (anioNuevo, indiceMes + 1, diaNuevo ) #Si es el último día del mes de diciembre else: return ( anioNuevo, indiceMes + 1, diaNuevo ) #Si es el último día del mes que no sea Febrero ni Diciembre else: return "La cantidad de días debe ser un número natural positivo" else: return "No es una fecha válida" else: return "No es una fecha válida"
def R4(dias_desde_primero_enero): if ((requerimiento_0.R0(dias_desde_primero_enero)) and (requerimiento_2.R2(dias_desde_primero_enero))): anio = dias_desde_primero_enero[0] mes = dias_desde_primero_enero[1] dia = dias_desde_primero_enero[2] dias_meses = [31,28,31,30,31,30,31,31,30,31,30,31] #Los dias que posee cada mes en orden de izquierda a derecha cantidad_dias = 0 for i in range(mes- 1): #Sumar todos los dias desde enero hasta mes anterior cantidad_dias += dias_meses[i] i += 1 cantidad_dias += dia - 1 #Sumarle la cantidad de dias que han pasado completamente en el mes actual if(2 < mes and requerimiento_1.R1(anio)): #Si es anio bisiesto y mes mayor a febrero cantidad_dias += 1 print(cantidad_dias) else: print("Error en el formato de fecha indicado")