Gostaria de dizer a diferença entre objetos de data válidos e inválidos em JS, mas não consegui descobrir como:
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'
Alguma idéia para escrever uma isValidDate
função?
- Ash é recomendado
Date.parse
para analisar cadeias de datas, o que fornece uma maneira autorizada de verificar se a cadeia de datas é válida. - O que eu preferiria, se possível, é fazer com que minha API aceite uma instância Date e seja capaz de verificar / afirmar se é válida ou não. A solução da Borgar faz isso, mas preciso testá-la nos navegadores. Também me pergunto se existe uma maneira mais elegante.
- Ash me fez pensar em não ter minha API aceitar
Date
instâncias, isso seria mais fácil de validar. - Borgar sugeriu testes para uma
Date
instância e, em seguida, testes para oDate
valor de tempo do. Se a data for inválida, o valor da hora éNaN
. Eu verifiquei com ECMA-262 e esse comportamento está no padrão, que é exatamente o que estou procurando.
return ( Object.prototype.toString.call(d) === "[object Date]" && !isNaN(d.getTime()) );