Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php时间验证,无需以小时为单位的零_Php_Time - Fatal编程技术网

php时间验证,无需以小时为单位的零

php时间验证,无需以小时为单位的零,php,time,Php,Time,我想验证24小时格式 下面的代码接受错误的1:05:24,因为它应该只接受01:05:24 try { foreach ($arr as $key=>$item) { if (date('H:i:s', strtotime($item[1]))) { } else { throw new Exception('Invalid Time Format'); } } } catch (Exception $e)

我想验证24小时格式

下面的代码接受错误的1:05:24,因为它应该只接受01:05:24

try 
{  
  foreach ($arr as $key=>$item)
  {
    if (date('H:i:s', strtotime($item[1]))) 
    {

    } else {
      throw new Exception('Invalid Time Format');       
    }
  }
} 
catch (Exception $e) 
{
  echo $exp  = $e->getMessage();
}
以下使用将区分您提到的两种情况

但是,请注意,无论是此方法还是问题中提到的方法都无法正确检测无效时间,例如
00:99:99

如果需要,则需要另一种方法,其中最简单的方法可能是解析出数字并在其上运行


基于您提供的代码,一种方法是:

$php_date = date('H:i:s', strtotime($item[1]));
if ($php_date && $php_date == $item[1]) {
    // valid date
}
这将检查是否可以按照代码中的格式创建日期,并且还将确保格式为
H:i:s
的结果日期与用户输入的日期相对应


但是,就用户友好性而言,如果您可以根据用户输入创建日期,那么最好接受它,并在缺少前导0的情况下自己添加它。之后只需使用
$php\u date
来支持
$item[1]

考虑使用regexpOf,当然,可以使用
[0-5]
而不是
\d
作为分秒的第一位数字;和
([0-1][0-9])|(2[0-3])
,而不是
\d\d
。还要注意的是,严格地说,应该对字符串解析器的
\
字符进行转义,以确保生成的正则表达式是正确的(但是如果以下字符不重要,PHP字符串解析器会在结果中保留未转义的
\
字符,因此这通常不会引起注意)。
$php_date = date('H:i:s', strtotime($item[1]));
if ($php_date && $php_date == $item[1]) {
    // valid date
}