Php 无法验证日期

Php 无法验证日期,php,codeigniter,Php,Codeigniter,我正在尝试验证出生日期字段的日期,该日期介于1996年和1900年之间。而且应该是正确的日期格式 但下面这个函数给我的输出总是false。 我做错了什么 function validateDate($date) { $this->load->helper('date'); $datestring1 = "%Y-%m-%d"; $date1 = "1996-01-01"; $date2 = "1990-01-01";

我正在尝试验证出生日期字段的日期,该日期介于1996年和1900年之间。而且应该是正确的日期格式

但下面这个函数给我的输出总是false。 我做错了什么

 function validateDate($date) {
        $this->load->helper('date');
        $datestring1 = "%Y-%m-%d";
        $date1 = "1996-01-01";
          $date2 = "1990-01-01";
        $d = DateTime::createFromFormat('Y-m-d', $date);
        return $d && $d->format('Y-m-d') == $date && $date > $date2 && $date < $date1;
    }
函数validateDate($date){
$this->load->helper('date');
$datestring1=“%Y-%m-%d”;
$date1=“1996-01-01”;
$date2=“1990-01-01”;
$d=DateTime::createFromFormat('Y-m-d',$date);
返回$d&&$d->format('Y-m-d')==$date&&$date>$date2&&$date<$date1;
}

我不知道您的函数有什么问题,但这应该可以工作

function validate($date){

    $d = DateTime::createFromFormat('Y-m-d', $date);

    if($d === false) return false;

    $y = intval($d->format('Y'));

    return $y >= 1990 && $y < 1996;
}
函数验证($date){
$d=DateTime::createFromFormat('Y-m-d',$date);
如果($d==false),则返回false;
$y=intval($d->format('y');
返回$y>=1990和$y<1996;
}

如果您希望1988-07-25是一个有效条目(如屏幕截图所示),您的“日期2”应该是“1980”或更早,而不是“1990”。

您可以试试这个

function validation($date){ //yyyy-mm-dd
    $date_element = explode('-', $date);
    if(is_array($date_element) and isset($date_element[0]) and ($date_element[0] >= 1990 and $date_element[0] <= 1996)){
        return true;
    }
    return false;
}
函数验证($date){//yyyy-mm-dd
$date_元素=分解('-',$date);

如果(is_数组($date_元素)和isset($date_元素[0])和($date_元素[0]>=1990和$date_元素[0]),谢谢您的时间,但仍然不起作用。它给出了“false”即使日期是正确的,例如,在这种情况下,会有什么错误?您希望日期在1990年和1996年之间。在屏幕截图中,您输入了1988:,这应该只会导致false。@Sundara和低于5.3.0的PHP版本的
这个答案不起作用。是的,您是对的。事实上,我上面的代码也在起作用。它是关于出生日期的验证应该在1900和1996之间,但是在我上面的代码中,我指出了错误的开始日期,即1900……你帮助我提醒这个问题。