Я знаю, что это старый вопрос, но я столкнулся с той же проблемой и увидел, что ни один из ответов не работал должным образом - в частности, отсеивание чисел (1 200 345 и т. Вот довольно необычный метод, о котором я мог подумать, и он, кажется, работает. Пожалуйста, укажите, есть ли случаи, когда это не удастся.
if(sDate.toString() == parseInt(sDate).toString()) return false;
Это строка для удаления чисел. Таким образом, вся функция может выглядеть так:
function isDate(sDate) {
if(sDate.toString() == parseInt(sDate).toString()) return false;
var tryDate = new Date(sDate);
return (tryDate && tryDate.toString() != "NaN" && tryDate != "Invalid Date");
}
console.log("100", isDate(100));
console.log("234", isDate("234"));
console.log("hello", isDate("hello"));
console.log("25 Feb 2018", isDate("25 Feb 2018"));
console.log("2009-11-10T07:00:00+0000", isDate("2009-11-10T07:00:00+0000"));