【问题标题】:how to validate 24 hour formated Time in Jquery or javascript?如何在 Jquery 或 javascript 中验证 24 小时格式时间?
【发布时间】:2012-08-09 08:34:17
【问题描述】:

我想验证 24 小时格式的时间,时间格式如下。

HH:MM:SS

我怎么能去。请帮我。 我的 HTML 代码是

    <asp:TextBox Width="120px" MaxLength="20" ID="txtEndTime" runat="server"></asp:TextBox>
                                <ajaxctrl:maskededitextender id="metxtEndTime" runat="server" targetcontrolid="txtEndTime"
                                    mask="99:99:99" messagevalidatortip="true" masktype="Number" inputdirection="LeftToRight"
                                    clearmaskonlostfocus="false" acceptnegative="None" errortooltipenabled="True" />

【问题讨论】:

  • 验证?如 HH = 0 && MM > 0 && MM 0 && SS
  • 也可以查看这篇帖子stackoverflow.com/questions/9080944/…
  • 有效表示值..小时不能超过24,分钟不能大于60,秒数相同
  • 小时可能是 0 到 24 或限制为 23,具体取决于您希望如何显示午夜。分钟应该是 0 到 59,秒应该是 0 - 59,但如果允许闰秒,则可以是 60。

标签: javascript jquery asp.net validation time


【解决方案1】:

要仅验证格式,您可以使用:

var valid = (timeStr.search(/^\d{2}:\d{2}:\d{2}$/) != -1);

如果您也尝试验证这些值,您可以试试这个:

var valid = (timeStr.search(/^\d{2}:\d{2}:\d{2}$/) != -1) &&
            (timeStr.substr(0,2) >= 0 && timeStr.substr(0,2) <= 24) &&
            (timeStr.substr(3,2) >= 0 && timeStr.substr(3,2) <= 59) &&
            (timeStr.substr(6,2) >= 0 && timeStr.substr(6,2) <= 59);

【讨论】:

  • 那会验证格式,但不会验证值,对吗?
  • @ATaylor - 是的,没错。不确定他是否也想检查这些值。
  • 感谢杰夫的大力帮助
【解决方案2】:

这个任务的一个好的模式是

/^(?:[01]\d|2[0-3]):(?:[0-5]\d):(?:[0-5]\d)$/.test(document.getElementById("metxtEndTime").value);

那个正则表达式可以用在 HTML5 的输入元素的 pattern 属性中,但我还没试过。

【讨论】:

    【解决方案3】:

    验证格式和值:

    // Allows times like 24:05:00
    function validateTime(s) {
      var t = s.split(':');
    
      return /^\d\d:\d\d:\d\d$/.test(s) &&
             t[0] >= 0 && t[0] < 25 &&
             t[1] >= 0 && t[1] < 60 &&
             t[2] >= 0 && t[2] < 60;
    }
    

    取决于您是否要允许午夜 24:00:00 等值,以及午夜过后 15 分钟的 24:15:00。

    【讨论】:

      【解决方案4】:

      这种方法很简单,将 24:01 视为无效。 “id”是 php 代码中输入语句中的 id,以便可以将冒号 (:) 插入并写回时间。

      function checkTime(str,id){
          if (str.length == 0) return true;
          if (str.length < 4)  return false;
          var x = str.indexOf(":");
          if (x < 0){
              str = str.substr(0,2)+":"+str.substr(2,2);
              document.getElementById(id).value = str;
              document.getElementById(id).focus();
              return true;
           }  
          if (
              (str.substr(0,2) >= 0 ) && 
              (str.substr(0,2) <= 24) &&
              (str.substr(3,2) >= 0 ) && 
              (str.substr(3,2) <= 59) &&
              (str.substr(0,2) < 24 || (str.substr(0,2) == 24 && str.substr(3,2) == 0))
              )
              return true;
          return false;
      }
      

      【讨论】:

        【解决方案5】:

        一种不同的方法,但使用了一个额外的 javascript 库:

        var valid = moment(timeStr, "HH:mm:ss", true).isValid();
        

        我想如果你已经在你的项目中使用了moment.js,那没有什么不好的。

        【讨论】:

          猜你喜欢
          • 2012-06-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-12-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多