php时间验证在几小时内没有零

时间:2014-07-08 07:24:52

标签: 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) 
{
  echo $exp  = $e->getMessage();
}

2 个答案:

答案 0 :(得分:2)

preg_match的以下用法将区分您提到的两种情况。

但请注意,您在问题中提及的方法和方法都无法正确检测到00:99:99等无效时间。

如果您需要,您需要一种不同的方法,最简单的方法可能是解析数字并在其上运行this function

<?php
$mydate_bad = "1:05:70";
$mydate_good = "01:05:24";
print (preg_match("/^\d\d:\d\d:\d\d$/", $mydate_bad));  # Returns 0
print (preg_match("/^\d\d:\d\d:\d\d$/", $mydate_good)); # Returns 1
?>

答案 1 :(得分:0)

根据您提供的代码,一种方法如下:

$php_date = date('H:i:s', strtotime($item[1]));
if ($php_date && $php_date == $item[1]) {
    // valid date
}

这将检查是否可以在代码中创建日期,并且还将确保格式为H:i:s的结果日期与用户输入的日期相对应。

但是,就用户友好性而言,如果您可以根据用户输入创建日期,则最好接受它并自行添加前导0(如果缺少)。之后只需使用$php_date支持$item[1]