Возможный дубликат:
Обнаружение экземпляра даты "недействительной даты" в JavaScript
Я использовал следующее для определения допустимой даты:
var text = $('#Date').val();
var date = Date.parse(text);
if (isNaN(date)) {
// Invalid date
}
Но обнаружил, что Date.parse считает следующие допустимые даты (mm/dd/yyyy)
- 2/30/2011
- 11/31/2011
Любой другой способ обнаружения недопустимых дат, когда количество дней превышает общее количество дней в месяце?
UPDATE: Еще большая проблема заключается в том, что плагин проверки jQuery не обнаруживает это как недопустимую дату!
РЕШЕНИЕ:
Основываясь на комментариях @Guffa, я создал следующую функцию для проверки дат:
function validDate(text) {
var date = Date.parse(text);
if (isNaN(date)) {
return false;
}
var comp = text.split('/');
if (comp.length !== 3) {
return false;
}
var m = parseInt(comp[0], 10);
var d = parseInt(comp[1], 10);
var y = parseInt(comp[2], 10);
var date = new Date(y, m - 1, d);
return (date.getFullYear() == y && date.getMonth() + 1 == m && date.getDate() == d);
}