检查日期是否在范围内

5

我正在尝试检查格式为mm.dd.yyyy的日期是否大于今天,并且小于从今天起6个月后的日期。

这是我的代码:

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) {
        alert('1');
    } else {
        alert('2');/always alert it
    }
}

如果我执行isLinkExpiryDateWithinRange('2012年12月08日'),我希望它显示1,因为这是在范围内的,但它显示的是2。此外,第一个警报显示为true,第二个警报显示为false。
请问有人可以解释一下发生了什么吗?
3个回答

8

更改:

var endDate = today;

目标:

var endDate = new Date(today);

请点击这里查看有关对象引用和更改的内容。有一些非常好的例子可以帮助解释这个问题,特别是:

相反,情况是传递的项是按值传递的。 但按值传递的项本身是一个引用。

JSFiddle示例


7
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

2
以下函数检查所选日期是否在今天的5天内。使用的日期格式为“DD-MM-YYYY”,您可以通过更改value.split('-')[1]顺序和分隔符来使用任何格式。
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.");
        }

    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接