Пример #1
0
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")
Пример #2
0
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"
Пример #3
0
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"
Пример #5
0
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")