Vorrei dire la differenza tra oggetti data validi e non validi in JS, ma non sono riuscito a capire come:
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'
Qualche idea per scrivere una isValidDate
funzione?
- Ash ha raccomandato
Date.parse
di analizzare le stringhe di date, il che fornisce un modo autorevole per verificare se la stringa di date è valida. - Ciò che preferirei, se possibile, è che la mia API accetti un'istanza Date e che sia in grado di verificare / affermare se è valida o meno. La soluzione di Borgar lo fa, ma devo provarlo su tutti i browser. Mi chiedo anche se esiste un modo più elegante.
- Ash mi ha fatto considerare di non far accettare le
Date
istanze alle mie API , questo sarebbe più facile da convalidare. - Borgar ha suggerito di provare per
Date
un'istanza, e quindi di testare ilDate
valore temporale. Se la data non è valida, il valore dell'ora èNaN
. Ho verificato con ECMA-262 e questo comportamento è nello standard, che è esattamente quello che sto cercando.
return ( Object.prototype.toString.call(d) === "[object Date]" && !isNaN(d.getTime()) );