Сравнение Дат 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;

}