2017-09-15 194 views
1

我得到準確的結果,如果我設定開始日期和結束日期時,年份是2017年。但是,當開始日期15月-201615日至2017年它不工作,並顯示錯誤MESSAGE-笨開始和結束日期驗證

$error = "End date can't be older than begin date "; 

這裏是我的代碼

 $data['beginDate'] = $this->input->post('beginDate'); 
     $data['endDate'] = $this->input->post('endDate'); 

     if($data['endDate'] < $data['beginDate']){ 
      $error = "End date can't be older than begin date "; 
      $this->session->set_flashdata('error', $error); 
      redirect('/search'); 
     } 
     else{ 
      $this->load->model('personhistory'); 
      $data['rets'] = $this->personhistory->searchDetails(); 
      $data['sum'] = $this->personhistory->searchDetailsSum(); 
      $data['title'] = "Search Details"; 
      $this->load->view('search_results', $data); 
     } 

有什麼解決方案來擺脫這個問題的?請幫助...

+0

請清楚地瞭解你的測試/例子輸入是什麼。導致錯誤的'$ data ['beginDate']'和'$ data ['endDate']'的確切值是什麼? –

+0

這些值是使用JQuery日曆選擇的日期 – user3311692

+0

您有時間機器嗎?我不這麼認爲。十月總是在我的日曆上九月之後。 –

回答

0

PHP不知道你的字符串是什麼,如果值從發佈的數據到來,那麼他們都是字符串:

// These are strings 
$s1 = '15-October-2016'; 
$s2 = '15-September-2016'; 

相反,你需要爲創建datetime對象的比較

$d1 = new DateTime('15-October-2016'); 
$d2 = new DateTime('15-September-2016'); 

if($d1 < $d2) 
    echo 'First date comes before the second date'; 

if($d1 > $d2) 
    echo 'First date comes after the second date'; 

if($d1 == $d2) 
    echo 'First date and second date are the same'; 

試試這段代碼並改變日期,你會看到我是對的。

UPDATE:

從技術上講,你也可以使用的strtotime

<?php 

$s1 = strtotime('15-October-2016'); 
$s2 = strtotime('15-September-2016'); 

if($s1 < $s2) 
    echo 'First date comes before the second date'; 

if($s1 > $s2) 
    echo 'First date comes after the second date'; 

if($s1 == $s2) 
    echo 'First date and second date are the same'; 
+0

對不起,我的錯誤... 第二次約會不會** ** 2016年9月15日**,它將** ** 2017年9月15日** 我不'如果日期是** 2016年10月14日**而不是** ** 2016年10月15日**我的代碼工作正常,那麼請告訴我們是什麼樣的問題。 @BrianGottier – user3311692

+0

我不知道你是否閱讀我的任何評論,甚至試過我的代碼,但我向你解釋了爲什麼你的代碼無法正常工作。這是因爲你試圖將日期作爲字符串進行比較。我爲您提供了兩種選擇,而且兩種都適合您。第一種選擇是使用PHP的DateTime類,另一種選擇是使用PHP的strtotime函數。你有沒有嘗試過這些?如果你不能認識到我的答案是好的,我沒有任何理由繼續幫助你。試試這些代碼,並根據需要進行修改。你會看到它適合你。 –

相關問題