Javascript来计算给定日期是当前日期还是将来日期?

时间:2014-02-19 14:59:29

标签: javascript jquery

在日期选择器中,我想限制输入以防止过去的日期。我使用了下面的JavaScript,但它在某些条件下失败了。

 function isPastDate(value) {
        var now = new Date;
        var target = new Date(value);

        if (target.getFullYear() < now.getFullYear()) {
            return true;
        } else if (target.getMonth() < now.getMonth()) {
            return true;
        } else if (target.getDate() < now.getDate()) {
            return true;
        }
    return false;
}

有人可以帮助我吗?

3 个答案:

答案 0 :(得分:4)

正如epascarello所说,只需比较两个日期:

function isPastDate(value) {
    return new Date() > new Date(value);
}

这是因为从1970年1月1日开始以毫秒为单位测量日期(如果我错了,请纠正我),所以真正发生的是两个长数字之间的比较。

答案 1 :(得分:1)

请参阅this post

var selectedDate = $('#datepicker').datepicker('getDate');
var now = new Date();
if (selectedDate < now) {
  // selected date is in the past
}

答案 2 :(得分:-1)

您的功能在逻辑上是错误的,如果年份在测试月份之前实际上是相同的,则不会检查,相同的是几个月和几天。 你可以尝试:

   function isPastDate(value) {
    var now = new Date;
    var target = new Date(value);

    if (target.getFullYear() < now.getFullYear()) {
        return true;
    } else if (target.getFullYear() === now.getFullYear())
        if (target.getMonth() < now.getMonth()) {
            return true;
        } else if (target.getMonth() === now.getMonth()) {
            if (target.getDate() < now.getDate()) {
                return true;
            }
        }
    }

    return false;
}

希望有所帮助