javascript日期验证在今天的日期无效

时间:2014-06-24 06:04:12

标签: javascript jquery validation date datetime

我有以下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();
}

当我给出未来的日期时,它的工作正常,但它今天的日期不起作用。我还需要查看今天的日期。当我尝试进入今天的日期时,我无法弄清楚错误提示。

3 个答案:

答案 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;
}