验证日期范围

时间:2013-05-24 13:09:06

标签: javascript jquery

Date1:23/05/2013  Date 2:29/05/2013

现在我有2个dateTimePickers(分别是dtDateStart和dtDateFinish)和一个提交按钮。

我想验证提交按钮点击,因此它不应接受这两个日期之间的日期(如上所述);

if (dtDateStart >= Date1 && dtDateFinish <= Date2)
                    {
                        //some operation
                    }

如果我们选择范围内的日期,则此代码正常工作。 当我们选择20/05/2013和25/05/2013以及日期28/05/2013和01/06/2013之类的日期时,此代码无效。 你对如何编写if条件有任何想法吗?

2 个答案:

答案 0 :(得分:1)

日期比较不是那样的。

function compareDates(d1, d2) {
    var ms = d1 - d2;  // difference in miliseconds
    return ms > 0 ? true : false;    
};

如果您需要比较不同的时间单位,则需要进行转换。以下是按天检查(您的日期必须至少相隔1天)。

 function compareDates(d1, d2) {
        var ms = d1 - d2,  // difference in miliseconds
            hours = ms / 3600,
            days = hours / 24,
            weeks = days / 7;
        return days > 0 ? true : false;    
 };

调整您的需求。

if (compareDates(dtDateStart, Date1) && compareDates(Date2, dtDateFinish)) {
    // dates are within range.
};

答案 1 :(得分:1)

您可以将日期转换为毫秒,这样可以更轻松地进行比较:

var date1 = new Date("05/23/2013").getTime(), // 1369263600000
    date2 = new Date("05/29/2013").getTime(), // 1369782000000
    myDate = new Date("05/25/2013").getTime(); // 1369436400000

if (myDate >= date1 && myDate <= date2) {
    console.log(true);
}

Example