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 isValidDatefungsi?
- Ash direkomendasikan
Date.parseuntuk 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
Dateinstance sama sekali, ini akan lebih mudah untuk divalidasi. - Borgar menyarankan pengujian untuk
Datecontoh, dan kemudian pengujian untuk nilaiDatewaktu 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()) );