Esta função em Javascript testa uma data para verificar se é válida.

Se você tem alguma outra sugestão para esta função por favor comente.


/**
* Valida uma string de data
* @param {string} sData Uma string de data
* @return verdadeiro se a data é válida
*/
function testaData(sData) {
if (!sData.length) return false;
var datamat = sData.split('/');
if (datamat.length < 3) return false;
var dia = (datamat[0].charAt(0) == '0') ? parseInt(datamat[0].slice(1)) : parseInt(datamat[0]);
var mes = (datamat[1].charAt(0) == '0') ? parseInt(datamat[1].slice(1)) : parseInt(datamat[1]);
var ano = parseInt(datamat[2]);
if (ano < 1800) return false;
var data = new Date(ano, (mes - 1), dia);
var datastr = "" + dia + mes + ano;
var dataconvertida = "" + data.getUTCDate() + (data.getMonth() + 1) + data.getFullYear();
return(datastr == dataconvertida);
}