1

What should i do ?

$edit_end_date  = '2011-02-31';
$validator_date = new Zend_Validate_Date(array('format' => 'yyyy-mm-dd'));  
$isval          =   $validator_date->isValid($edit_end_date);  
if((!$isval) || empty($edit_end_date))
    {
    echo "Please Enter Valid End Date. !";
    }else{
echo "Entered Is Valid End Date. !";
}

how come it returns true date ?

Zuber Surya
  • 839
  • 7
  • 17

2 Answers2

1

According to the Zend API Docs, it appears that Zend_Validate_Date will only validate whether the argument passed to it, is a valid date construct (also considers locale), it will not validate if the date actually exists.

Zend_Validate_Date allows you to validate if a given value contains a date. This validator validates also localized input.

-- Edit --

Looks like you can use PHP's built in checkdate() function to determine if a date is valid or not.

Mike Purcell
  • 19,847
  • 10
  • 52
  • 89
0

There are bugs in data validation (ZF-7583 at issue tracker). Look at Zend_Validate_Date just doesn't work properly

You can use regex validation like in answer to linked question, but it will only check for syntax, not if date exists for real. For this you can use checkdate() - as Mike Purcell suggested - combined with Zend_Validate_Callback:

$validator1 = new Zend_Validate_Regex(
    array('pattern' => '/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/')
);
$validator1->setMessage(
    "Date does not match the format 'yyyy-mm-dd'",
    Zend_Validate_Regex::NOT_MATCH
);

$validator2 = new Zend_Validate_Callback(function($value)) {
    // using checkdate() or other function
});
Community
  • 1
  • 1
BartekR
  • 3,827
  • 3
  • 24
  • 33