在javascript中比较日期

时间:2009-10-29 15:25:01

标签: c# .net asp.net javascript visual-studio

我有一个自定义验证程序,指向客户端脚本以验证文本框。

我的日期和时间分为两个文本框 - 一个以mm / dd / yyyy格式显示日期,另一个以hh:mm am / pm格式显示时间。

我需要确保文本框在一起不比现在大。我怎么能做到这一点?

这是我到目前为止所拥有的。我做错了什么?

function checkminutes(sender, args) {
        var txtdate = $get('<%=FormView1.FindControl("txtdate").ClientID %>');
        var txttime = $get('<%=FormView1.FindControl("txttime").ClientID %>');
        var totaltime = txtdate.value + ' ' + txttime.value;
        totaltime = Date(totaltime);
        var d = new Date();
        if (totaltime > d) {
            args.IsValid = false;
        }
        else {
            args.IsValid = true;
        }


    }

这是有效的答案。

function checkminutes(sender, args) {
        var txtdate = $get('<%=FormView1.FindControl("txtdate").ClientID %>');
        var txttime = $get('<%=FormView1.FindControl("txttime").ClientID %>');
        var totaltime = txtdate.value + ' ' + txttime.value;
        totaltime = Date.parse(totaltime);
        var d = new Date();
        if (totaltime > d) {
            args.IsValid = false;
        }
        else {
            args.IsValid = true;
        }
    }

3 个答案:

答案 0 :(得分:1)

只需比较自纪元以来的毫秒数:

totaltime = new Date("1988/02/21 08:08");
d = new Date();
if (totaltime.getTime() < d.getTime())
    alert("Date is valid");
else
    alert("Try again, Date is not valid");

编辑:当我使用“am / pm”时,我似乎无法让它工作,所以只需将其转换为24次,就可以了。

答案 1 :(得分:0)

不要浪费时间在客户端验证这一点。无论如何,无论你要在服务器端进行验证,它都永远不会可靠。

答案 2 :(得分:0)

您不应该使用javascript弹出窗口提醒用户存在问题;他们充其量只是笨重。

除非您告诉用户AJAXy页面存在问题,否则只需进行服务器端验证,您的应用程序将更加流畅。我假设你问的是这个问题,你不是在做AJAX。

就服务器端验证没有“确切时间”而言,您需要处理小时和分钟,而不是毫秒。