На самом деле это проблема, с которой я столкнулся раньше в моих работах, и следующий фрагмент кода - мой ответ на эту проблему.
// checkDateRange - Checks to ensure that the values entered are dates and
// are of a valid range. By this, the dates must be no more than the
// built-in number of days appart.
function checkDateRange(start, end) {
// Parse the entries
var startDate = Date.parse(start);
var endDate = Date.parse(end);
// Make sure they are valid
if (isNaN(startDate)) {
alert("The start date provided is not valid, please enter a valid date.");
return false;
}
if (isNaN(endDate)) {
alert("The end date provided is not valid, please enter a valid date.");
return false;
}
// Check the date range, 86400000 is the number of milliseconds in one day
var difference = (endDate - startDate) / (86400000 * 7);
if (difference < 0) {
alert("The start date must come before the end date.");
return false;
}
if (difference <= 1) {
alert("The range must be at least seven days apart.");
return false;
}
return true;
}
Теперь несколько замечаний по поводу этого кода: функция Date.parse
должна работать для большинства типов ввода, но известно, что у нее есть проблемы с некоторыми форматами, такими как «YYYY MM DD», поэтому вы должны проверить это перед использованием , Тем не менее, я помню, что большинство браузеров интерпретируют строку даты, заданную для Date.parse, исходя из настроек региона компьютера.
Кроме того, множитель для 86400000 должен быть в любом диапазоне дней, который вы ищете. Так что, если вы ищете даты, по крайней мере, с интервалом в одну неделю, тогда их должно быть семь.