-1
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 条件有任何想法吗?

4

2 回答 2

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

例子

于 2013-05-24T13:18:32.440 回答
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.
};
于 2013-05-24T13:16:20.390 回答