Me gustaría decir la diferencia entre objetos de fecha válidos e inválidos en JS, pero no pude entender cómo:
var d = new Date("foo");
console.log(d.toString()); // shows 'Invalid Date'
console.log(typeof d); // shows 'object'
console.log(d instanceof Date); // shows 'true'
¿Alguna idea para escribir una isValidDate
función?
- Ash se recomienda
Date.parse
para analizar cadenas de fecha, lo que proporciona una forma autorizada de verificar si la cadena de fecha es válida. - Lo que preferiría, si es posible, es que mi API acepte una instancia de Date y pueda verificar / afirmar si es válida o no. La solución de Borgar hace eso, pero necesito probarlo en todos los navegadores. También me pregunto si hay una forma más elegante.
- Ash me hizo considerar no tener mi API para aceptar
Date
instancias, esto sería más fácil de validar. - Borgar sugirió probar para una
Date
instancia, y luego probar elDate
valor de tiempo del 's. Si la fecha no es válida, el valor del tiempo esNaN
. Verifiqué con ECMA-262 y este comportamiento está en el estándar, que es exactamente lo que estoy buscando.
return ( Object.prototype.toString.call(d) === "[object Date]" && !isNaN(d.getTime()) );