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条件有任何想法吗?
答案 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);
}