function parse(str) {
if(!/^(\d){8}$/.test(str)) return "invalid date";
var y = str.substr(0,4),
m = str.substr(4,2),
d = str.substr(6,2);
return new Date(y,m,d);
}
Uso:
parse('20120401');
ACTUALIZACIÓN:
Como dijo Rocket, meses se basan en 0-js ... usar esto si el mes de no-0 basan en su cadena
function parse(str) {
if(!/^(\d){8}$/.test(str)) return "invalid date";
var y = str.substr(0,4),
m = str.substr(4,2) - 1,
d = str.substr(6,2);
return new Date(y,m,d);
}
ACTUALIZACIÓN:
Comprobación más rigurosa para la validez de la fecha. Se adoptó la forma de HBP de validar la fecha.
function parse(str) {
var y = str.substr(0,4),
m = str.substr(4,2) - 1,
d = str.substr(6,2);
var D = new Date(y,m,d);
return (D.getFullYear() == y && D.getMonth() == m && D.getDate() == d) ? D : 'invalid date';
}
http: //stackoverflow.com/a/2587398/650884 – Pavel