【问题标题】:Compare date in javascript在javascript中比较日期
【发布时间】:2009-10-29 15:25:01
【问题描述】:

我有一个自定义验证器,它指向客户端脚本来验证文本框。

我的日期和时间被分成两个文本框 - 一个以 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;
        }
    }

【问题讨论】:

  • 我觉得我已经说过一百万次了。确保验证服务器端,因为可以规避任何客户端验证。我曾经通过这种方式绕过 twitter 的 140 个字符限制。

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


【解决方案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 时间,就可以了。

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 但是您无法获得服务器端验证的确切时间。除非页面被刷新或者我使用更新面板。
    • 否,请验证客户端,以便用户立即获得错误反馈。然后验证服务器端以确保它没有被可能的恶意尝试规避。
    • 我喜欢你的回答 geowa4。但是我在上面的代码中有什么问题?
    • @geiwa4- 我同意,这就是在客户端进行验证的目的,即时反馈,但你说这是浪费时间,这就是我不同意的原因
    【解决方案3】:

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

    除非您告诉用户 AJAXy 页面存在问题,否则只需进行服务器端验证,您的应用程序就会看起​​来更流畅。我假设如果你问这个特定的问题,你不是在做 AJAX。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-11
      • 1970-01-01
      • 2022-11-18
      • 2012-02-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多