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 isValidDatefunzione?
- Ash ha raccomandato
Date.parsedi 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
Dateistanze alle mie API , questo sarebbe più facile da convalidare. - Borgar ha suggerito di provare per
Dateun'istanza, e quindi di testare ilDatevalore 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()) );