Я хотів би сказати різницю між дійсними та недійсними об’єктами дати в JS, але не міг зрозуміти, як:
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'
Будь-які ідеї для написання isValidDateфункції?
- Ash рекомендований
Date.parseдля розбору рядків дати, що дає авторитетний спосіб перевірити, чи є рядок дати дійсним. - Якщо я б хотів, я можу, щоб мій API прийняв екземпляр дати та міг перевірити / затвердити, чи дійсний він чи ні. Рішення Боргар робить це, але мені потрібно перевірити це в браузерах. Мені також цікаво, чи існує більш елегантний спосіб.
- Еш змусив мене взагалі не мати мого API приймати
Dateекземпляри, це було б найлегше перевірити. - Боргар запропонував протестувати
Dateпримірник, а потім тестувати наDateзначення часу. Якщо дата недійсна, значення часу становитьNaN. Я перевірив ECMA-262, і ця поведінка відповідає стандарту, саме це я і шукаю.
return ( Object.prototype.toString.call(d) === "[object Date]" && !isNaN(d.getTime()) );