Validación de fechas en Python
En este post te mostraré como validar fechas en Python. Es decir, validar que una cadena representando a una fecha sea válida y cumpla con un formato.
Además de comprobar que el formato sea el correcto (por ejemplo YYYY-MM-DD) también vamos a verificar que la fecha en sí sea válida, revisando por ejemplo que los días del mes no sean mayores a los soportados, que el número de mes no sea mayor a 12, etcétera.
Lo que tenemos que hacer es tratar de parsear la fecha y, en caso de que se genere una excepción, diremos que la fecha no es válida.
Comenzamos importando a datetime
que está dentro de datetime
:
from datetime import datetime
Después podemos parsearla con:
fecha = datetime.strptime(fecha_como_cadena, formato)
En donde fecha_como_cadena
es la fecha de la cual comprobaremos su validez, y formato
es el formato que debe cumplir.
Un sencillo ejemplo es:
from datetime import datetime
fecha_cadena = "2020-04-23"
fecha = datetime.strptime(fecha_cadena, '%Y-%m-%d')
# Ahora ya tenemos a una fecha con la cual podemos operar, ver días, meses, años, etcétera.
Si strptime
encuentra una inconsistencia en la fecha, va a generar una excepción. Por lo tanto podemos encerrarla en un try except lo que nos lleva al ejemplo completo:
"""
____ _____ _ _ _
| _ \ | __ \ (_) | | |
| |_) |_ _ | |__) |_ _ _ __ _____| |__ _ _| |_ ___
| _ <| | | | | ___/ _` | '__|_ / | '_ \| | | | __/ _ \
| |_) | |_| | | | | (_| | | / /| | |_) | |_| | || __/
|____/ \__, | |_| \__,_|_| /___|_|_.__/ \__, |\__\___|
__/ | __/ |
|___/ |___/
Blog: https://parzibyte.me/blog
Ayuda: https://parzibyte.me/blog/contrataciones-ayuda/
Contacto: https://parzibyte.me/blog/contacto/
Copyright (c) 2020 Luis Cabrera Benito
Licenciado bajo la licencia MIT
El texto de arriba debe ser incluido en cualquier redistribución
"""
from datetime import datetime
while True:
try:
fecha = input("Ingresa una fecha en el formato YYYY-MM-DD: ")
datetime.strptime(fecha, '%Y-%m-%d')
print("Fecha válida")
except ValueError:
print("Fecha inválida")
En el ejemplo solicitamos la fecha por teclado, intentamos parsearla según el formato que se ve y en caso de que haya un error lo informamos.
Funciona de maravilla; por ejemplo, respeta años bisiestos, días del mes, etcétera:
En el ejemplo puedes ver que estoy validando fechas en Python ya que por ejemplo en este año (2020) sí hubo 29 días en febrero, pero en el 2019 no, así que también se verifica si es o no bisiesto.
Por otro lado, no se pueden poner meses más allá del 12 ni cadenas que no conformen el formato.
El día de hoy vamos a ver cómo restablecer la impresora térmica GOOJPRT PT-210 a…
Hoy voy a enseñarte cómo imprimir en una impresora térmica conectada por USB a una…
En este post voy a enseñarte a programar un servidor web en Android asegurándonos de…
En este post te quiero compartir un código de C++ para listar y cancelar trabajos…
Gracias a WebAssembly podemos ejecutar código de otros lenguajes de programación desde el navegador web…
Revisando y buscando maneras de imprimir un PDF desde la línea de comandos me encontré…
Esta web usa cookies.