Я пытаюсь написать код, который будет проверять данные формы. У меня есть поле даты, которое должно иметь формат mm/dd/yyyy
. Мне нужно перехватывать исключения, такие как февраля, поэтому я добавил этот код:javascript date validation not validation 31 февраля
var d = new Date(dob);
if (isNaN(d.getTime())) { //this if is to take care of February 31, BUT IT DOESN'T!
error = 1;
message += "<li>Invalid Date</li>";
} else {
var date_regex = /^(0[1-9]|1[0-2])\/(0[1-9]|1\d|2\d|3[01])\/(19|20)\d{2}$/;
var validFormat = date_regex.test(dob);
if (!(validFormat)) {
error = 1;
message += "<li>Invalid date format - date must have format mm/dd/yyyy</li>";
}
}
Однако я нашел что-то очень странное: в то время как даты 02/32/2000 ошибки как недействительный дату, 02/31/2000 нет!
'новые Дата (' 2013-02-31 00: 00:00 ') 'на самом деле оценивает' Sun Mar 03 2013 00:00:00 GMT-0500 (Восточное стандартное время) ', поэтому это не ошибка. Не 100% уверены в причине этого, хотя –
Это произойдет за каждый месяц с менее чем за 31 день ... – Christoph