2009-09-08 82 views
2

我使用Zend_Validate::is($value,'Date')YYYY-MM-DD格式驗證用戶輸入的日期字符串。在en_US語言環境中使用Zend_Validate_Date驗證YYYY-MM-DD格式的字符串

這個函數調用創建層次結構:

Zend_Validate::is() 
Zend_Validate_Date->isValid() 
Zend_Date::isDate() 
Zend_Locale_Format::getDate() 
Zend_Locale_Format::_parseDate() 

最後,失敗與此異常:

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 

我用EN_US我的應用程序的語言環境。我怎樣才能配置Zend_Validate接受這種日期格式?例如,是否可以更改日期的區域設置格式?

回答

9

試一下:

$validator = new Zend_Validate_Date('YYYY-MM-DD'); 
if($validator->isValid($value)) 
    // yay 
+0

非常感謝。我以前從未使用過單獨的Zend_Validate_X類。這是更可定製的。 – farzad 2009-09-08 08:33:47

+9

雖然... YYYY是「ISO Year」(在年份開始時略有差異),而「DD」不是一個月中的某一天,您應該使用「yyyy-MM-dd」。 http://framework.zend.com/manual/en/zend.date.constants.html#zend.date.constants.selfdefinedformats.table – gnarf 2009-09-08 09:00:07

+0

如果您在同一元素上有其他驗證器或自定義驗證器,建議您將這個驗證器添加爲第二個(或最後一個) – surfer190 2014-03-07 14:14:39

5

zend_validate_date有一個bug,當您指定以下yyyy-MM-dd格式,如果日期字符串2011-10-11 12312被傳遞進行驗證,它返回,而不是虛假的真實!

+4

這似乎與原始問題沒有關係... – 2011-11-24 07:19:11

+0

關於此錯誤的任何更新,似乎我也面對它。 – 2015-07-07 08:28:29

相關問題