【问题标题】:i want to check a string of format "mm/dd/YYYY" is date or not without using regex in php我想检查格式“mm/dd/YYYY”的字符串是否是日期而不在 php 中使用正则表达式
【发布时间】:2015-09-02 15:52:18
【问题描述】:

我有一个这种格式的字符串。 mm/dd/yyyy.我想在不使用 regex.anyone 帮助我的情况下检查此字符串是否在 php 中是否有效..?

【问题讨论】:

标签: php regex string date


【解决方案1】:

你可以试试date_parse

成功返回包含解析日期信息的数组,失败则返回 FALSE。

有效日期应采用有效的strtotime() 格式。

【讨论】:

    【解决方案2】:

    使用 strptime() 函数来解析你的字符串。

    strptime() 返回一个已解析日期的数组,如果出错则返回 FALSE。 如果"mm/dd/yyyy" 是日期..,则格式为*"%m/%d/%Y"*

    那么strptime()可以这样使用..,

    strptime ("mm/dd/yyyy" , "%m/%d/%Y" );


    如果字符串格式正确,则返回true,否则返回false


    【讨论】:

      【解决方案3】:

      date_parse() 将执行您需要执行的操作 - 但您需要检查输出以确保日期确实是有效或无效的日期。如果警告和错误为空,则日期有效:

      <?php
      
      $invalid_date = date_parse("02/30/2015"); //Feburary 30th doesn't exist!
      $valid_date = date_parse("02/17/2015");
      $wtf_date = date_parse("99/55/XXXX");
      
      function check_date($date){
          if(count($date['warnings']) != 0 || count($date['errors']) != 0){
              return false;
          } else {
              return true;
          } 
      }
      
      var_dump(check_date($invalid_date)); //outputs false
      var_dump(check_date($valid_date)); //outputs true
      var_dump(check_date($wtf_date)); //outputs false
      

      作为奖励,您可以通过遍历警告和错误(如果存在)来查看错误:

      $invalid_date = date_parse("02/30/2015");
      
      if(count($invalid_date['warnings']) != 0 || count($invalid_date['errors']) != 0){
          foreach($invalid_date['warnings'] as $warning){
              //A non-existant day is a warning, not an error.
              echo $warning . PHP_EOL;
          }
      
          foreach($invalid_date['errors'] as $errors){
              //$wtf_date would have lots of errors.
              echo $errors . PHP_EOL;
          }
      } else {
          echo '$invalid_date is valid'  . PHP_EOL;;
      }
      

      输出以下内容:

      $invalid_date: 解析的日期无效

      【讨论】:

        猜你喜欢
        • 2012-05-15
        • 1970-01-01
        • 2023-04-07
        • 2017-07-10
        • 1970-01-01
        • 2013-11-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多