Date.parse () no funciona en IE 8

La función simple Date.parse() no funciona bien en Internet Explorer 8 .
Estoy usando Date.parse() para validar la fecha en el formato "MM/DD/YYYY" .

  • _.isNaN(Date.parse("99/99/9999")) return true – la fecha no es válida
  • _.isNaN(Date.parse("01/01/1990")) return false – la fecha es válida

Pero ahora probé mi JavaScript en IE 8 y estoy confundido.

  • "88/88/8888" : para esta fecha, todas las fechas en las que funciona correctamente no son válidas.
  • "13/35/2012" – fecha no válida pero Date.parse("13/35/2012") analiza esta fecha solo en IE y no devuelve NaN .

jsFiddle Demo

¿Algunas ideas?

El JavaScript estándar solo acepta fechas RFC 2822, que no se ven así. Tendrá que escribir su propio código para separar las partes de la fecha, convertirlas en números y hacer las instancias de la Date esa manera.

Internet Explorer también admite fechas ISO (2012-09-20 08:22), y de hecho analizará las fechas “MM / DD / YYYY”. Lo está haciendo para su fecha “13/35/2012”, que en lo que respecta a JavaScript es una fecha perfectamente válida: es el 4 de febrero de 2013. JavaScript “corrige” fechas falsas; El mes 13 del año es el primer mes del año siguiente, y el día 35 del mes (si es enero, con 31 días) es el cuarto día del mes siguiente.

Básicamente, se espera que el analizador de fecha se comporte de forma diferente a como lo hace en realidad.

Mira aquí , aquí y aquí . En general, Date.parse() no es una solución de navegador cruzado. Hay muchos complementos y bibliotecas disponibles, solo buscalo en Google.

Utilicé mi método para validar la fecha

  var isValidDate = function(dateAsString) { var parsedDate = Date.parse(dateAsString); if (_.isNaN(parsedDate) || !_.isEqual(new Date(parsedDate).format("mm/dd/yyyy"), dateAsString)) { return false } return true }