15 Jan 2007

Validando varios formatos de fecha

Un pequeño ejercicio sobre como validar una fecha en Java

Es posible que te hayas encontrado con la necesidad de validar una fecha en un formato, pero ¿Y si puede haber varias formas de introducir una fecha y todas son válidas?. Bueno, la solución que he encontrado es mas o menos (resumida) la siguiente.

Primero tengo una clase de utilidad para validar:


public class TimeUtil {
// Patrones de fecha que se admiten. El elemento 0 será
// considerado "por defecto"
private static final String [] patronesFecha = {
 "dd/MM/yyyy", 
 "yyyy-MM-dd",
 "dd-MM-yyyy",
 "dd MM yyyy",
 "yyyy/MM/dd"
 
};

// Y este es el metodo que devuelve el date
public static Date getDate(String fechaPrevista) 
  throws ParseException {
   SimpleDateFormat format = new SimpleDateFormat();
   Date date;
   ParseException e = null;
   for (String patron : patronesFecha) {
       try {
 format.applyLocalizedPattern(patron);
 date = format.parse(fechaPrevista);
 return date;
       } catch (ParseException ex) {
    e = ex;
       }
   } // fin del for
  // Podemos cambiar esto por un return null 
  throw e;
}}

De esta forma verificamos que la fecha tiene al menos uno de los formatos válidos.