Chciałbym powiedzieć różnicę między prawidłowymi i nieprawidłowymi obiektami daty w JS, ale nie mogłem dowiedzieć się, jak:
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'
Jakieś pomysły na napisanie isValidDate
funkcji?
- Ash zaleca się
Date.parse
do analizowania ciągów daty, co daje wiarygodny sposób sprawdzenia, czy ciąg daty jest prawidłowy. - Jeśli to możliwe, wolę, aby mój interfejs API zaakceptował instancję Date i mógł sprawdzić / potwierdzić, czy jest poprawna, czy nie. Rozwiązanie Borgara to robi, ale muszę to przetestować w różnych przeglądarkach. Zastanawiam się także, czy istnieje bardziej elegancki sposób.
- Ash kazał mi rozważyć, czy mój interfejs API nie akceptuje
Date
w ogóle instancji, byłoby to najłatwiejsze do sprawdzenia. - Borgar zasugerował przetestowanie
Date
instancji, a następnie przetestowanieDate
wartości czasu. Jeśli data jest nieprawidłowa, wartość czasu toNaN
. Sprawdziłem za pomocą ECMA-262 i takie zachowanie jest w standardzie, dokładnie tego szukam.
return ( Object.prototype.toString.call(d) === "[object Date]" && !isNaN(d.getTime()) );