2014-07-19 99 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; 
}