在en_US语言环境中使用Zend_Validate_Date验证YYYY-MM-DD格式的字符串

far*_*zad 2 php zend-framework zend-validate

我正在YYYY-MM-DD使用格式验证用户输入的日期字符串Zend_Validate::is($value,'Date').

此调用创建此层次结构:

Zend_Validate::is()
Zend_Validate_Date->isValid()
Zend_Date::isDate()
Zend_Locale_Format::getDate()
Zend_Locale_Format::_parseDate() 
Run Code Online (Sandbox Code Playgroud)

最后,它失败了这个例外:

Zend_Locale_Exception: Unable to parse date '2009-09-08' using 'MMM d, y' (M <> y) in /usr/share/php/Zend/Locale/Format.php on line 1001
Run Code Online (Sandbox Code Playgroud)

我使用en_US作为我的应用程序区域设置.如何配置Zend_Validate以接受此日期格式?例如,是否可以更改日期的区域设置格式?

jan*_*ver 9

试试看:

$validator = new Zend_Validate_Date('YYYY-MM-DD');
if($validator->isValid($value))
    // yay
Run Code Online (Sandbox Code Playgroud)

  • 你应该使用''yyyy-MM-dd'`虽然... YYYY是"ISO年份"(在年度开始附近略有不同)和"DD"日,而不是按月.http://framework.zend.com/manual/en/zend.date.constants.html#zend.date.constants.selfdefinedformats.table (9认同)

小智 5

zend_validate_date有一个错误,当你指定以下yyyy-MM-dd格式,如果2011-10-11 12312传递日期字符串进行验证,它返回true而不是false !!