Я хотел бы сказать разницу между действительными и недействительными объектами даты в 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 принимал экземпляр Date и мог проверять / утверждать, действителен ли он или нет. Решение Borgar делает это, но мне нужно протестировать его в разных браузерах. Мне также интересно, есть ли более элегантный способ.
- Эш заставил меня задуматься о том, чтобы мой API вообще не принимал
Date
экземпляры, это будет проще всего проверить. - Боргар предложил проверить
Date
экземпляр, а затем проверитьDate
значение времени. Если дата недействительна, значение времени равноNaN
. Я проверил с ECMA-262, и это поведение в стандарте, который именно то, что я ищу.
return ( Object.prototype.toString.call(d) === "[object Date]" && !isNaN(d.getTime()) );