Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.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
Zend framework Zend#u日期:isDate赢得';不要强制执行$format_Zend Framework_Zend Date - Fatal编程技术网

Zend framework Zend#u日期:isDate赢得';不要强制执行$format

Zend framework Zend#u日期:isDate赢得';不要强制执行$format,zend-framework,zend-date,Zend Framework,Zend Date,我遇到一个问题,Zend_Date::isDate返回true,即使该值不一定与给定的格式匹配 例如: $time = "12:34:56"; // Time doesn't have AM/PM attached if( Zend_Date::isDate($time, 'hh:mm:ss a') ) echo "this is true"; else echo "this is false"; 这总是正确的,即使格式列出了“a”,表示它需要“一天中的时间,本地化”(在我的

我遇到一个问题,Zend_Date::isDate返回true,即使该值不一定与给定的格式匹配

例如:

$time = "12:34:56"; // Time doesn't have AM/PM attached

if( Zend_Date::isDate($time, 'hh:mm:ss a') )
    echo "this is true";
else
    echo "this is false";
这总是正确的,即使格式列出了“a”,表示它需要“一天中的时间,本地化”(在我的例子中是“AM”/“PM”)。即使是完全格式错误的时间,如“12:12:34:56:56”,也会返回真值。然而,“:34:56”的时间将返回false。这是一个bug,还是我认为我给出的格式是需要匹配的,而遗漏了什么


谢谢

我不认为Zend_Date是为了“强制”一种格式而构建的。它是为了回答“如果我给Zend_Date这个字符串,你能用这种格式推它吗?”这确实是一种误导

在您的示例中,这是正确的,但实际计算结果为:

Jan 25, 35 12:00:00 AM
Dec 14, 34 8:56:00 AM (Dec 12, 34 + 56 hours and 56 minutes)
你可能没想到

在您的虚假示例中,它也是正确的,其计算结果为:

Jan 25, 35 12:00:00 AM
Dec 14, 34 8:56:00 AM (Dec 12, 34 + 56 hours and 56 minutes)
要验证日期,我认为您需要使用Zend_验证程序

    $validator = new Zend_Validate_Date(array('format' => 'hh:mm:ss a'));
    var_dump($validator->isValid("12:34:56 pm")); // true
    var_dump($validator->isValid("14:34:56 pm")); // false, actually 2pm
    var_dump($validator->isValid("01:11:11 am")); // true
    var_dump($validator->isValid("01:11:11 xm")); // true, 24h fallback
    var_dump($validator->isValid("24:01:01")); // false
    var_dump($validator->isValid("16:01:01")); // true, 24h fallback

如果您先通过验证运行日期,然后进入Zend_Date,您应该会得到预期的结果。

不幸的是,Zend_Validate_Date也使用Zend_Date,因此它也有同样的问题。看见