我有以下java脚本代码将验证日期范围...当用户输入今天的日期或任何将来的日期我已将IsValid设置为true然后将执行保存操作....
为此我写了下面的代码..
function Save(e) {
var popupNotification = $("#popupNotification").data("kendoNotification");
var container = e.container;
var model = e.model;
var isValid = true;
var compareDate = e.model.DeliveryDate;
alert(compareDate);
var todayDate = new Date();
var compareDateModified = new Date(compareDate)
alert(compareDateModified);
if (compareDateModified > todayDate || compareDateModified === todayDate) {
isValid = true;
}
else
isValid = false;
e.preventDefault();
if (isValid == false)
{
popupNotification.show("Delivery Date should be today date or Greater", "error");
}
$('#Previous').show();
$('#Next').show();
}
当我给出未来的日期时,它的工作正常,但它今天的日期不起作用。我还需要查看今天的日期。当我尝试进入今天的日期时,我无法弄清楚错误提示。
答案 0 :(得分:2)
您正在比较两个相同类型但对象不同的对象,因此总会导致“不相等” 如果你使用date.getTime(),你的比较会得到更好的结果 - 但前提是时间组件是相同的。
答案 1 :(得分:1)
将Date对象想象为时间戳。它基于unix风格的时间戳(自1970年1月1日以来的秒数),因此Date对象不是日期,它是日期和时间。
你比较的是时间,这可能会有点不确定。如果只有几天重要,请尝试使用:
fullCompareDate = compareDateModified.getFullYear() + "/" + compareDateModified.getMonth() + "/" + compareDateModified.getDate();
fullTodayDate= todayDate.getFullYear() + "/" + todayDate.getMonth() + "/" + todayDate.getDate();
if(compareDateModified>todayDate||fullCompareDate==fullTodayDate)
{
//Do something
}
这将比较日期和时间以确保它们更大或使用比较日期检查当前日期(作为字符串)
另一个解决方案是在两个日期删去时间:
compareDateModified.setHours(0,0,0,0);
todayDate.setHours(0,0,0,0);
if(compareDateModified>=todayDate)
{
//Do something
}
答案 2 :(得分:1)
您正在以毫秒级别比较compareDateModified与todayDate。要比较当天的水平:
var todayDate = new Date();
todayDate.setHours(0,0,0,0);
//you may also have to truncate the compareDateModified to the first
//second of the day depending on how you setup compareDate
if (compareDateModified >= todayDate) {
isValid = true;
}