A logo showing the text blog.marcnuri.com
English
Inicio»Java»SimpleDateFormat para validar fechas de usuario // parseo de strings a fechas en Java

Entradas Recientes

  • Fabric8 Kubernetes Client 7.2.0 está disponible!
  • Conectarse a un servidor MCP con JavaScript y AI SDK
  • Conectarse a un servidor MCP con JavaScript y LangChain.js
  • El Futuro de las Herramientas para Desarrolladores en la era de la IA
  • Conectarse a un servidor Model Context Protocol (MCP) con Java y LangChain4j

Categorías

  • Antiguo
  • Front-end
  • Go
  • Herramientas
  • Industria y negocios
  • Inteligencia Artificial
  • Java
  • JavaScript
  • Operaciones
  • Personal
  • Proyectos personales

Archivos

  • mayo 2025
  • abril 2025
  • marzo 2025
  • febrero 2025
  • enero 2025
  • diciembre 2024
  • noviembre 2024
  • agosto 2024
  • junio 2024
  • mayo 2024
  • abril 2024
  • marzo 2024
  • febrero 2024
  • enero 2024
  • diciembre 2023
  • noviembre 2023
  • octubre 2023
  • septiembre 2023
  • agosto 2023
  • julio 2023
  • junio 2023
  • mayo 2023
  • abril 2023
  • marzo 2023
  • febrero 2023
  • enero 2023
  • diciembre 2022
  • noviembre 2022
  • octubre 2022
  • agosto 2022
  • julio 2022
  • mayo 2022
  • marzo 2022
  • febrero 2022
  • enero 2022
  • diciembre 2021
  • noviembre 2021
  • octubre 2021
  • septiembre 2021
  • agosto 2021
  • julio 2021
  • diciembre 2020
  • octubre 2020
  • agosto 2020
  • junio 2020
  • mayo 2020
  • marzo 2020
  • febrero 2020
  • enero 2020
  • noviembre 2019
  • octubre 2019
  • julio 2019
  • diciembre 2018
  • agosto 2018
  • julio 2018
  • junio 2018
  • mayo 2018
  • marzo 2018
  • febrero 2018
  • noviembre 2017
  • octubre 2017
  • agosto 2017
  • julio 2017
  • enero 2017
  • julio 2016
  • enero 2016
  • diciembre 2015
  • noviembre 2015
  • diciembre 2014
  • marzo 2014
  • febrero 2011
  • junio 2008
  • mayo 2008
  • abril 2008
  • enero 2008
  • junio 2007
  • mayo 2007
  • abril 2007
  • marzo 2007

SimpleDateFormat para validar fechas de usuario // parseo de strings a fechas en Java

2007-05-21 en Java / Antiguo etiquetado Java / Parsing / SimpleDateFormat por Marc Nuri | Última actualización: 2025-01-12
English version

Parseando fechas en Java con SimpleDateFormat

Cuando desarrollas interfaces de usuario para software de gestión, a menudo necesitas validar y transformar la entrada del usuario antes de almacenarla en una base de datos o archivo. Para las fechas, la entrada del usuario suele llegar como cadenas, que deben convertirse en objetos de fecha de Java.

La clase SimpleDateFormat del paquete java.text es una forma de analizar estas cadenas en objetos java.util.Date. Así es como puedes usarla de manera efectiva.

Uso básico de SimpleDateFormat

La clase SimpleDateFormat proporciona un método llamado parse(String source) que toma una cadena de fecha y la convierte en un objeto Date.

Aquí tienes un ejemplo:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateParsingExample {
  public static void main(String[] args) {
    // Create a SimpleDateFormat object with the desired pattern
    SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");

    // Disable lenient parsing to enforce strict date validation
    sdf.setLenient(false);

    try {
        System.out.println(sdf.parse("25/12/2007"));
        // Output: Sun Dec 25 00:00:00 CET 2007
    } catch (ParseException ex) {
        System.err.println("Error parsing date: " + ex.getMessage());
    }

    try {
        System.out.println(sdf.parse("34/15/2002"));
        // Output: Invalid date format: Unparseable date: "34/15/2002"
    } catch (ParseException ex) {
        System.err.println("Invalid date format: " + ex.getMessage());
    }

    try {
        System.out.println(sdf.parse("28/02/202"));
        // Output: Sun Feb 28 00:00:00 GMT 202
    } catch (ParseException ex) {
        System.err.println("Invalid date format: " + ex.getMessage());
    }
  }
}

Puntos clave

  1. Especificación del patrón: El patrón de formato (por ejemplo, "dd/MM/yyyy") define cómo debe estar estructurada la cadena de entrada.
  2. Análisis estricto: Usa sdf.setLenient(false) para asegurarte de que las fechas inválidas (como "34/15/2002") lancen una ParseException en lugar de ajustarse automáticamente. En el ejemplo, si setLenient se estableciera en true, la fecha "34/15/2002" se parsearía como Thu Apr 03 00:00:00 GMT 2003.
  3. Validación de la entrada: El último ejemplo se parsea correctamente, sin embargo, dependiendo de los requisitos, este podría no ser el comportamiento deseado.

Manejo de la longitud incorrecta de la entrada

En ocasiones, una cadena de fecha podría tener un formato válido pero una longitud incorrecta (por ejemplo, "28/02/202").

Para manejar estos casos, puedes agregar lógica de validación personalizada:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class EnhancedDateParsing {
  public static void main(String[] args) {
    try {
        System.out.println(parseDate("28/02/202"));
        // Output: Invalid date format: Date with incorrect length: 28/02/202
    } catch (ParseException ex) {
        System.err.println("Invalid date format: " + ex.getMessage());
    }
  }

  public static Date parseDate(String date) throws ParseException {
    SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
    sdf.setLenient(false);
    if (date.length() != 10) {
      throw new ParseException("Date with incorrect length: " + date, 0);
    }
    return sdf.parse(date);
  }
}

Este enfoque garantiza que solo se parseen cadenas de fecha válidas y con el formato correcto.

Twitter iconFacebook iconLinkedIn iconPinterest iconEmail icon

Navegador de artículos
Detectar Evento Key Pressed de la Tecla Tab en JTextField // Event.VK_TAB KeyPressedFunciones recursivas en Java // Empleando recursión para sumar un array de números
© 2007 - 2025 Marc Nuri