Hola:
Yo para casos de fechas (sobre todo con formato complicado) suelo extraer todos los componentes (dia, mes, año, hora, minuto y segundo) y crear un objeto
Date() con ellos. Después comparo todos los componentes por los que devuelve
Date() (que el motor de javascript habrá ajustado) y sabré si esa fecha existe y está correcta:
Podría ser algo así:
Código PHP:
var strFecha = "23/12/2007 23:55:10";
// Obtención de los componentes
var compFechaHora = strFecha.split(" ");
var compFecha = compFechaHora[0].split("/");
var compHora = compFechaHora[1].split(":");
var dia = parseInt( compFecha[0], 10);
var mes = parseInt( compFecha[1], 10)-1;
var anio = parseInt( compFecha[2], 10);
var hora = parseInt( compHora[0], 10);
var minuto = parseInt( compHora[1], 10);
var segundo = parseInt( compHora[2], 10);
var objFecha = new Date( anio, mes, dia, hora, minuto, segundo );
// Ahora que tengo todos los componentes y el objFecha, paso a la comprobación
var fechaCorrecta = ( dia == objFecha.getDate() );
fechaCorrecta = fechaCorrecta && ( mes == objFecha.getMonth() );
fechaCorrecta = fechaCorrecta && ( anio == objFecha.getFullYear() );
fechaCorrecta = fechaCorrecta && ( hora == objFecha.getHours() );
fechaCorrecta = fechaCorrecta && ( minuto == objFecha.getMinutes() );
fechaCorrecta = fechaCorrecta && ( segundo == objFecha.getSeconds() );
document.write(fechaCorrecta);
Luego para alertar dónde fallamos sólo hay que meter condicionales por todas partes.
Un saludo.