加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 在zend框架中检查有效日期

发布时间:2020-12-13 17:24:22 所属栏目:PHP教程 来源:网络整理
导读:我正在使用zend框架1.12.0,并且我从数据库获取值以进行验证. 那就是如果它是一个日期值,那么我必须将格式更改为YYYY-MM-DD为MM / DD / YYYY.Else我将值保持为”.我正在使用以下代码 $validator = new Zend_Validate_Date(); if(trim($value)=='0000-00-00' |
我正在使用zend框架1.12.0,并且我从数据库获取值以进行验证.
那就是如果它是一个日期值,那么我必须将格式更改为YYYY-MM-DD为MM / DD / YYYY.Else我将值保持为”.我正在使用以下代码

$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]       =   '';
          }
     }

我的问题是日期值可能是YYYY-MM-DD或YYYY-MM-DD H:i:s格式.所以当它的YYYY-MM-DD我得到正确的输出时.如果是YYYY-MM-DD H:我:它没有转换格式.所以如果使用zend以YYYY-MM-DD或YYYY-MM-DD H:i:s格式检查值是一个有效的日期.

解决方法

问题是Zend_Validate_Date没有正确处理时间戳.一种选择是通过将日期和strtotime传递给任何时候来对其进行标准化.

$value = date("Y-m-d",strtotime($value));

这将使日期永远

YYYY-MM-DD

另一种方法是创建自己的Timestamp验证器

唯一的要求是实现isValid和getMessages方法来实现Zend_Validate_Date具有可服务实现的接口.这将取消对输入日期格式的限制,但我认为这是一个目标.如果您只想允许几种不同的格式,也可以轻松实现.

class My_Validate_Datetime extends Zend_Validate_Date{
     public function isValid($value){
         // if strtotime can't understand a date it returns 0 which is falsey
         if (strtotime($value)){
             return true;
         }
         $this->_error(Zend_Validate_Date::INVALID_DATE);
         return false; 
     }
}

也可以看看
this part of the ZF docs或
this stack overflow question

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读