6

I'm trying to compare two datepicker dates and see if they are more than 7 days apart.

How would I do this?

I would normally just see if their difference is greater than 7, but that won't account for months and such.

Here is my code:

var datepickerBegin = $("#datepicker_start").val();
var datepickerEnd = $("#datepicker_to").val();

if (datepickerBegin - datepickerEnd > 7) { 
    alert('more than a week apart!') 
}

Any tips??

2
  • this seems to be the same question more or less - stackoverflow.com/questions/73971/… Commented Oct 10, 2012 at 13:56
  • 1
    When I try to utilize his solution, the 'difference' variable is NaN. Am I lost on something? I just want to see if it is indeed seven days apart Commented Oct 10, 2012 at 14:00

6 Answers 6

18

Use $("#datepicker_xxx").datepicker("getDate") to get the picked date as a Date. Then it's just a matter of

end - begin > 7 * 86400 * 1000
Sign up to request clarification or add additional context in comments.

Comments

2

Try this, DatePicker has a handy formatDate function which i've used to compare mm/dd/yy dates:

$.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

Comments

2

// Check the date range, 86400000 is the number of milliseconds in one day

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;

Comments

1

Try this:

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!') ;
}

Hope it should work. Thanks. For more check it out.

Comments

1
$(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" />

To: <input type="text" id="txtToDate" />

1 Comment

Try to post your answer as code by indenting it with at least 4 spaces. It will be better readable then.
0

this is working perfectly

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;

}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.