Следующий код ниже проверит, является ли введенная дата действительной датой.
На первый взгляд она выглядит большой, но в основном это комментарии.
Не требует подстроки нет регулярного выражения.
Способ работы JavaScript
заключается в том, что если вы разбиваете объект Date
с недопустимой датой (04/32/2010
) на его общие миллисекунды, а затем создаете еще один объект Date
с этими миллисекундами, онне будет создавать объект Date
, который отображает неправильную дату (04/32/2010
), он будет компенсировать и создавать надлежащие Date
(05/01/2010
).
Так просто, если вводотличается от нового Date
объекта, , тогда дата недействительна.
http://jsfiddle.net/dceast/vmHjN/ - Вот пример этого на JSFiddle.
var compareDate, checkDates = false;
var validateObject = {
init: function(year, month, day) {
return this.compareDate.init(year, month, day);
},
compareDate: {
init: function(year, month, day) {
var isValid = false;
// Compensate for zero based index, if month was not
// subtracted from one 0 === Jan, 1 === Feb, 2 === Mar
month -= 1;
// Create a new date object with the selected
// year, month, and day values and retrieve the
// milliseconds from it.
var mSeconds = (new Date(year, month, day)).getTime();
var objDate = new Date();
// Set the time of the object to the milliseconds
// retrieved from the original date. This will
// convert it to a valid date.
objDate.setTime(mSeconds);
// Compare if the date has changed, if it has then
// the date is not valid
if (objDate.getFullYear() === year &&
objDate.getMonth() === month &&
objDate.getDate() === day)
{
isValid = true;
}
return isValid;
}
}
};