日期的javascript比较;始终显示消息,因为当前日期是较早的日期

时间:2014-09-23 11:36:09

标签: javascript

选择当前日期时,请将讯息显示为You cannot select a day earlier than today

function checkDate(sender, args) {
    if (sender._selectedDate) < new Date()) {               
        alert("You cannot select a day earlier than today!");
        sender._selectedDate = new Date();               
        sender._textbox.set_Value(sender._selectedDate.format(sender._format))
    }
}

比较无法正常运作。

请帮帮我。

2 个答案:

答案 0 :(得分:0)

我猜测你的sender._selectedDate的小时,分​​钟,秒和毫秒数为0。您要比较它的new Date()将设置为当前时间的小时,分​​钟,秒和毫秒,这可能晚于_selectedDate。因此,您应该创建新日期,然后将其小时,分钟,秒和毫秒设置为0.然后您可以正确地比较日期。您可以使用setHours(),并传递小时,分钟,秒和毫秒。另外,感谢@andrex注意到您也有语法错误:在发送者__selectedDate之后删除)

function checkDate(sender, args) {
    var earliestDate = new Date();
    earliestDate.setHours(0,0,0,0);
    if (sender._selectedDate < earliestDate) {               
        alert("You cannot select a day earlier than today!");
        sender._selectedDate = earliestDate;               
        sender._textbox.set_Value(sender._selectedDate.format(sender._format));
    }
}

答案 1 :(得分:0)

不确定日期验证的数据是如何使用的,因此会想到几个解决方案。

无论如何,我会将日期分为(年/月/日/小时)等部分,并且(+/-)查明其中一个或另一个(年/月/日/小时)等不比较或比你的校验和变量早一点cq。

我认为你只想比较(年/月/日),所以那些检查有效时会丢弃剩下的!

var dag = nu.getDate(); var wkdag = nu.getDay(); var maand = nu.getMonth(); var jaar1 = nu.getYear();

顺便说一句。考虑到它,如果立即或稍后检查表单会产生很大的不同,因为在功能验证和发送消息之间经过的时间越多,日期更早的可能性越大,如果立即检查并使用服务器时间错误的机率最小,但即使这样,如果在24:00发送,日期cq日的验证将在第二天完成。你可能会想到一些代码来堵塞洞!