Чтобы проверить, является ли дата действительной, вы можете проанализировать компоненты даты, создать из нее объект Date
и проверить, совпадают ли компоненты в данных с проанализированными компонентами.Если вы создаете объект Date
из компонентов, выходящих за пределы диапазона, значения будут перетекать в следующий / предыдущий период для создания правильной даты.
Например, new Date(2011,0,42)
создаст объект, которыйсодержит дату 2/11/2011 вместо 1/42 / 2011.
Анализируя компоненты вместо полной даты, вы также решите проблему с различными форматами даты.Мой браузер, например, ожидает формат даты, например y-m-d
, а не d/m/y
.
Пример:
var text = '2/30/2011';
var comp = text.split('/');
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);
if (date.getFullYear() == y && date.getMonth() + 1 == m && date.getDate() == d) {
alert('Valid date');
} else {
alert('Invalid date');
}
Демо: http://jsfiddle.net/Guffa/UeQAK/