在日期选择器中,我想限制输入以防止过去的日期。我使用了下面的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;
}
有人可以帮助我吗?
答案 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;
}
希望有所帮助