2014-07-19 63 views
-1

我想验证出生日期字段的1996 & 1900之间的日期。也应该是在正确的日期格式无法验证日期

但这下面的功能是让我输出总是假的。 我做错了什么?

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; 
    } 
+0

请考虑写评论,而这样做不合理 –

回答

0

我不知道什么是错的功能,但这个应该工作

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; 
} 
+0

感谢您的时间,但仍然没有work.It是给“假”,即使日期是正确的如。 http://my.jetscreenshot.com/demo/20140720-advb-19kb.jpg在这种情况下可能是什么错误? –

+0

你想要1990年到1996年之间的日期。在你输入1988年的截图中:/只会导致错误。 @Sundara和'5.3.0以下的PHP版本'这个答案**不会工作**。 –

+0

是啊,你是对的..其实我上面的代码也工作..这是出生日期验证应该在1900年和1996年之间,但在我上面的代码我指出了错误的开始日期,即1900年..你帮我提醒一下 –

0

如果你想1988年7月25日是一个有效的条目(如在你的屏幕截图所示)你的“date2”应该是“1980”或更早的事物而不是“1990年”。

0

你可以试试这个

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; 
}