viernes, 27 de abril de 2012

Validar si una fecha es valida con Java

En este metodo hacemos uso de la clase  SimpleDateFormat para validar que una fecha cumpla con el formato dd/MM/yyyy (dia/mes/año), esto aplicaria en los casos en donde es necesario que el usuario ingrese la fecha manualmente sin hacer uso de algun componente como jCalendar

 public static boolean isFechaValida(String fecha) {
        try {
            SimpleDateFormat formatoFecha = new SimpleDateFormat("dd/MM/yyyy", Locale.getDefault());
            formatoFecha.setLenient(false);
            formatoFecha.parse(fecha);
        } catch (ParseException e) {
            return false;
        }
        return true;
    }

Nota: importar la clase java.text.SimpleDateFormat;

12 comentarios:

  1. gracias esto me funciono"

    ResponderEliminar
  2. Gracias.... estoy aprendiendo java y validar una fecha me estaba partiendo la cabeza... funciona bien...

    ResponderEliminar
  3. Y si ingreso dia 40 del mes 15 del año 2014 o sea 40/15/2014 tambien es valido ? o ese codigo solo valida el formato d/m/a?

    ResponderEliminar
    Respuestas
    1. ESA FECHA NO ES VALIDA, ASI QUE LANZARÁ UNA EXCEPCION.

      Eliminar
  4. La fecha no es valida, pero el formato si. Con ese codigo solo validas que el "formato" se cumpla, nada mas.

    ResponderEliminar
  5. Con el codigo que hay no solo se esta validando el formato de la fecha tb que sea una fecha valida. La clave esta en la propiedad setLenient (que por defecto vale true). Si seteamos esa propiedad a false una fecha como 30/15/2015 NO seria valida y lanzaria excepcion. En cambio si no seteamos esa propiedad Lenient o la seteamos a true, lo que hace es calcular la fecha q seria correcta segun lo introducido, es decir, si la fecha q va a comprobar es 40/15/2015, lo que hace es convertirla a 9/04/2016 cogiendo los 15 meses y convirtiendolo a 1 año y 3 meses y los 40 dias en un mes y 9 dias (pq el mes q hace 3 es marzo y tiene 31)

    ResponderEliminar
  6. Ejmpl: 2/10/0 lo toma como fecha valida, no experimenta el comportamiento deseado

    ResponderEliminar
  7. en el caso de model view controller donde agrego ese metodo?

    ResponderEliminar