Saya ingin memberi tahu perbedaan antara objek tanggal yang valid dan tidak valid di JS, tetapi tidak dapat mengetahui caranya:
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'
Adakah ide untuk menulis suatu isValidDate
fungsi?
- Ash direkomendasikan
Date.parse
untuk penguraian string tanggal, yang memberikan cara otoritatif untuk memeriksa apakah string tanggal valid. - Apa yang saya inginkan, jika mungkin, adalah agar API saya menerima contoh Tanggal dan untuk dapat memeriksa / menegaskan apakah itu valid atau tidak. Solusi Borgar melakukan itu, tetapi saya perlu mengujinya di seluruh browser. Saya juga bertanya-tanya apakah ada cara yang lebih elegan.
- Ash membuat saya menganggap API saya tidak dapat menerima
Date
instance sama sekali, ini akan lebih mudah untuk divalidasi. - Borgar menyarankan pengujian untuk
Date
contoh, dan kemudian pengujian untuk nilaiDate
waktu itu. Jika tanggal tidak valid, nilai waktu adalahNaN
. Saya memeriksa dengan ECMA-262 dan perilaku ini dalam standar, yang persis apa yang saya cari.
return ( Object.prototype.toString.call(d) === "[object Date]" && !isNaN(d.getTime()) );