Skip to content

Instantly share code, notes, and snippets.

@parzibyte
Created September 24, 2020 02:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save parzibyte/0af09eb80cc381e61e19c6224d399164 to your computer and use it in GitHub Desktop.
Save parzibyte/0af09eb80cc381e61e19c6224d399164 to your computer and use it in GitHub Desktop.
"""
https://parzibyte.me/blog
"""
"""
Funciones auxiliares para reutilizar más tarde
"""
def extraer_anio(fecha):
# Convertimos a string y extraemos los primeros 4 dígitos
return str(fecha)[0:4]
def extraer_mes(fecha):
return str(fecha)[4:6]
def extraer_dia(fecha):
return str(fecha)[6:8]
def year(fecha):
return extraer_anio(fecha)
def es_mes_valido(mes):
mes_como_entero = int(mes)
if mes_como_entero <= 0 or mes_como_entero > 12:
return False
else:
return True
def es_bisiesto(anio):
return anio % 4 == 0 and (anio % 100 != 0 or anio % 400 == 0)
def obtener_dias_del_mes(mes, anio):
mes_entero = int(mes)
anio_entero = int(anio)
# Abril, junio, septiembre y noviembre tienen 30
if mes_entero in [4, 6, 9, 11]:
return 30
# Febrero depende de si es o no bisiesto
if mes_entero == 2:
if es_bisiesto(anio_entero):
return 29
else:
return 28
else:
# En caso contrario, tiene 31 días
return 31
def es_dia_valido(anio, mes, dia):
dia_entero = int(dia)
dias_del_mes = obtener_dias_del_mes(mes, anio)
if dia_entero <= 0 or dia_entero > dias_del_mes:
return False
else:
return True
def extraer_fechas(fechas):
lista = []
fechas_string = str(fechas)
cantidad_fechas = int(len(fechas_string) / 8)
for i in range(cantidad_fechas):
fecha_extraida = fechas_string[i * 8:(i * 8) + 8]
lista.append(fecha_extraida)
return lista
"""
Funciones de la asignación
"""
def month(fecha):
mes = extraer_mes(fecha)
if not es_mes_valido(mes):
return "FECHA INCORRECTA"
else:
return mes
def monthName(fecha):
mes = extraer_mes(fecha)
if not es_mes_valido(mes):
return "FECHA INCORRECTA"
else:
meses = ["enero", "febrero", "marzo", "abril", "mayo", "junio", "julio", "agosto", "septiembre", "octubre",
"noviembre", "diciembre"]
mes_como_entero = int(mes)
# Usamos al mes como índice de la lista
indice = mes_como_entero - 1
# Y extraemos el nombre
nombre_mes = meses[indice]
return nombre_mes
def day(fecha):
anio = extraer_anio(fecha)
mes = extraer_mes(fecha)
dia = extraer_dia(fecha)
dia_entero = int(dia)
if not es_mes_valido(mes) or not es_dia_valido(anio, mes, dia):
return "FECHA INCORRECTA"
else:
return dia
def date2Text(fecha):
anio = extraer_anio(fecha)
mes = extraer_mes(fecha)
dia = extraer_dia(fecha)
if not es_mes_valido(mes) or not es_dia_valido(anio, mes, dia):
return "FECHA INCORRECTA"
else:
return dia + "/" + mes + "/" + anio
def date2TextName(fecha):
anio = extraer_anio(fecha)
mes = extraer_mes(fecha)
dia = extraer_dia(fecha)
if not es_mes_valido(mes) or not es_dia_valido(anio, mes, dia):
return "FECHA INCORRECTA"
nombre_mes = monthName(fecha)
# Lo convertimos a entero para quitar el cero a la izquierda en caso de que lo tenga
dia_entero = int(dia)
return str(dia_entero) + " de " + nombre_mes + " de " + anio
def manyDates(fechas):
fechas_transformadas = extraer_fechas(fechas)
resultado = ""
for fecha in fechas_transformadas:
resultado += "\n" + date2Text(int(fecha))
return resultado
def sameDates(fechas, fecha):
fechas_extraidas = extraer_fechas(fechas)
cantidad = 0
mes_referencia = extraer_mes(fecha)
dia_referencia = extraer_dia(fecha)
for fecha in fechas_extraidas:
mes = extraer_mes(int(fecha))
dia = extraer_dia(int(fecha))
if mes == mes_referencia and dia == dia_referencia:
cantidad += 1
return cantidad
print(sameDates(2020121920201218202012182020123220200101, 20201218), end="")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment