python

Validar fecha 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.

Parsear fecha en Python

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.

Validando fecha en Python

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:

Validación de fechas en Python

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.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Entradas recientes

Creador de credenciales web – Aplicación gratuita

Hoy te voy a presentar un creador de credenciales que acabo de programar y que…

1 semana hace

Desplegar PWA creada con Vue 3, Vite y SQLite3 en Apache

Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…

2 semanas hace

Arquitectura para wasm con Go, Vue 3, Pinia y Vite

En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…

2 semanas hace

Vue 3 y Vite: crear PWA (Progressive Web App)

En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…

2 semanas hace

Errores de Comlink y algunas soluciones

Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…

2 semanas hace

Esperar promesa para inicializar Store de Pinia con Vue 3

En este artículo te voy a enseñar cómo usar un "top level await" esperando a…

2 semanas hace

Esta web usa cookies.