Сравнение Дат Datepicker Javascript
Я пытаюсь сравнить два datepicker
даты и посмотреть, если они более чем на 7 дней.
Как бы я это сделал?
обычно я просто вижу, если их разница больше 7, но это не будет учитывать месяцы и тому подобное.
вот мой код:
var datepickerBegin = $("#datepicker_start").val();
var datepickerEnd = $("#datepicker_to").val();
if (datepickerBegin - datepickerEnd > 7) {
alert('more than a week apart!')
}
какие-либо советы??
6 ответов
использовать $("#datepicker_xxx").datepicker("getDate")
чтобы получить выбранную дату как Date
. Тогда это просто вопрос
end - begin > 7 * 86400 * 1000
попробуйте это, DatePicker имеет удобную функцию formatDate, которую я использовал для сравнения дат mm/dd/yy:
$.datepicker.formatDate("dd/mm/yy",new Date("09/01/2014")) < $.datepicker.formatDate("dd/mm/yy", new Date("10/01/2014")); // Returns true
$.datepicker.formatDate("dd/mm/yy",new Date("10/01/2014")) < $.datepicker.formatDate("dd/mm/yy", new Date("10/01/2014")); // Returns false
$.datepicker.formatDate("dd/mm/yy",new Date("11/01/2014")) < $.datepicker.formatDate("dd/mm/yy", new Date("10/01/2014")); // Returns false
// проверяем диапазон дат, 86400000-это количество миллисекунд в один день
var difference = (datepickerEnd- datepickerBegin ) / (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;
попробуйте это:
var datepickerBegin = $("#datepicker_start").val(); // lets, returning in mm/dd/yy format
var datepickerEnd = $("#datepicker_to").val(); // lets, returning in mm/dd/yy format
if ( ($.datepicker.parseDate('mm/dd/yy', datepickerBegin) - $.datepicker.parseDate('mm/dd/yy', datepickerEnd)) > 7) {
alert('more than a week apart!') ;
}
надеюсь, что это должно работать. Спасибо. Для большего проверить выход.
$(document).ready(function(){
$("#txtFromDate").datepicker({
minDate: 0,
maxDate: "+60D",
numberOfMonths: 2,
onSelect: function(selected) {
$("#txtToDate").datepicker("option","minDate", selected)
}
});
$("#txtToDate").datepicker({
minDate: 0,
maxDate:"+60D",
numberOfMonths: 2,
onSelect: function(selected) {
$("#txtFromDate").datepicker("option","maxDate", selected)
}
});
});
From:<input type="text" id="txtFromDate" />
В: <input type="text" id="txtToDate" />
это работает прекрасно
function checkDateDifference(startDate, endDate) {
startDate = $.datepicker.parseDate('mm/dd/yy', startDate);
endDate = $.datepicker.parseDate('mm/dd/yy', endDate);
var difference = (endDate - startDate) / (86400000);
alert(difference)
if (difference < 0) {
showError("The start date must come before the end date.");
return false;
}
return true;
}