Check if a date within in range

I am trying to check if a date of format mm.dd.yyyy is greater than today and less than the date after 6 months from today.

Here is my code:

var isLinkExpiryDateWithinRange = function(value) {
    var monthfield = value.split('.')[0];
    var dayfield = value.split('.')[1];
    var yearfield = value.split('.')[2];
    var inputDate = new Date(yearfield, monthfield - 1, dayfield);
    var today = new Date();     
    today = new Date(today.getFullYear(), today.getMonth(), today.getDate());
    alert(inputDate > today);//alert-> true
    var endDate = today;
    endDate.setMonth(endDate.getMonth() + 6);
    alert(inputDate > today);//alert-> false
    if(inputDate > today && inputDate < endDate) {
    } else {
        alert('2');/always alert it

If I execute isLinkExpiryDateWithinRange('12.08.2012') I wish it will show 1 as this is within the range, but it is displaying 2. Moreover the first alert is showing true and the second one false.

Can anyone please explain what is happening?




var endDate = today;


var endDate = new Date(today);

See the posts here for how objects are referenced and changed. There are some really good examples that help explain the issue, notably:

Instead, the situation is that the item passed in is passed by value. But the item that is passed by value is itself a reference.

JSFiddle example

function isLinkExpiryDateWithinRange( value ) {
    // format: mm.dd.yyyy;
    value = value.split(".");
    var todayDate = new Date(),
        endDate = new Date( todayDate.getFullYear(), todayDate.getMonth() + 6, todayDate.getDate() +1 );
        date = new Date(value[2], value[0]-1, value[1]);

    return todayDate < date && date < endDate;

isLinkExpiryDateWithinRange("12.24.2012"); // true
isLinkExpiryDateWithinRange("12.24.2020"); // false

Below function checks if date selected is within 5 days from today. Date format used is "DD-MM-YYYY", you can use any format by changing value.split('-')[1] order and split character.

function showMessage() {
        var value = document.getElementById("invoiceDueDate").value;
        var inputDate = new Date(value.split('-')[2], value.split('-')[1] - 1, value.split('-')[0]);
        var endDate = new Date();
        endDate.setDate(endDate.getDate() + 5);// adding 5 days from today
        if(inputDate < endDate) {
            alert("If the due date selected for the invoice is within 5 days, and express settlement fee will apply to this transaction.");



Recent Questions

Top Questions

Home Tags Terms of Service Privacy Policy DMCA Contact Us Javascript

©2020 All rights reserved.