2013-12-16 4 views
0

start dateend date을 비교하려고하지만 같은 달에 작동합니다. 하지만 난 두 달 다른 일을하지 입력하십시오. 예를 들어두 날짜가 맞지 않는 경우

: 나는 그것을 작동합니다 start date= 23/12/2013End date=06/12/2013 입력 모르지만, 나는 Start date = 23/12/2013End date=01/01/2014이 같은 오류를 줄 것이다 입력입니다.

모델 :

public function _date(){ 
     $startDate = strtotime($this->input->post('start_date')); 
     $endDate = strtotime($this->input->post('end_date')); 

     if ($endDate >= $startDate) 
      return True; 
     else { 
      return False; 
      $this->form_validation->set_message('compareDate', '%s should be greater than Contract Start Date.'); 
     } 
     return False; 
} 

컨트롤러 :

function date_validation(){ 
    $isDate = $this->mdl_education->_date(); 
    $data['emp_id'] = $this->input->post('emp_id',TRUE); 
    if($isDate) 
    { 
     $this->session->set_flashdata('msg', 'Please Enter valid Date '); 
     redirect("education/form/".$data['emp_id']); 
    } 
} 



$this->form_validation->set_rules('end_date', 'End Date', 'trim|required|xss_clean|callback_date_validation'); 

솔루션은 무엇입니까?

답변

0

$startDate = strtotime(str_replace('/', '-', $this->input->post('start_date'))); 
$endDate = strtotime(str_replace('/', '-', $this->input->post('end_date'))); 

documentation for strtotime보십시오.

업데이트 : m에서

일자 문서 위에서 중요/다양한 구성 요소들 사이의 분리를보고 명확화되어 D/Y 또는 DMY 형식 : 세퍼레이터 슬래시 경우 (/) , 미국의 m/d/y가 가정된다. 구분 기호가 대시 (-) 또는 점 (.) 인 경우 유럽 d-m-y 형식이 사용됩니다.

0

또 다른 옵션은 사용자가 설정 한 적절한 형식을 제공해야하거나 falsem/d/Y

$startDate = DateTime::createFromFormat('m/d/Y',$this->input->post('start_date'))->format('U'); 

$endDate = DateTime::createFromFormat('m/d/Y',$this->input->post('end_date'))->format('U'); 

당신은 비교하기 전에 timestamp로 먼저 포맷 할 수 있습니다 반환합니다 DateTime

입니다.

타임 스탬프는 유닉스 에포크 (1970년 1월 1일 0시 0 분 0 초 GMT)부터 초

if ($endDate >= $startDate) 
{ 
    return True; 
}else 
{ 
    return False; 
    $this->form_validation->set_message('compareDate', '%s should be greater than Contract Start Date.'); 
} 
관련 문제