I am using zend framework 1.12.0 and i have a value fetching from database to be validated. That is if its a date value then i have to change the format into YYYY-MM-DD to MM/DD/YYYY.Else i keep the value as ''.I am using the following code
$validator = new Zend_Validate_Date();
if(trim($value)=='0000-00-00' || $validator->isValid(trim($value))){
if($validator->isValid(trim($value))){
$utilObj = new Utilityclass();
$arrayReturn[$key] = $utilObj->getDateMdy($value,"/");
}
else{
$arrayReturn[$key] = '';
}
}
My problem is that the date value may be in YYYY-MM-DD or YYYY-MM-DD H:i:s format.So when its YYYY-MM-DD i am getting the correct output.If its YYYY-MM-DD H:i:s its not converting the format.So how to check a value is a valid date if its in YYYY-MM-DD or YYYY-MM-DD H:i:s format using zend.
The problem is the Zend_Validate_Date doesn't correctly deal with timestamps. One option would be to normalize the $value by passing it through
dateandstrtotimeto trim off any times.this will make the date always be
Another would be to create your own Timestamp validator
the only requirment is to implement the isValid, and getMessages method to fulfill the interface of which Zend_Validate_Date has a serviceable implementation. This will remove the restrictions on what the input date format is but I think that is kinda the goal. If you only wanted to allow a couple of different formats that could be easily implemented into this as well.
See also this part of the ZF docs or this stack overflow question