Я хотів би сказати різницю між дійсними та недійсними об’єктами дати в 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()) );