比较两个不工作的日期

时间:2013-12-16 07:12:38

标签: codeigniter

我正在尝试比较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');

什么是解决方案?

2 个答案:

答案 0 :(得分: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或d-m-y格式的日期通过查看各个组件之间的分隔符来消除歧义:如果分隔符是斜杠(/),则假定为美国m / d / y;而如果分隔符是破折号( - )或点(。),则假定为欧洲d-m-y格式。

答案 1 :(得分:0)

另一个选项是 DateTime

您必须提供已设置的正确格式,否则它将返回false示例为m/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

  

时间戳是自Unix时代(1970年1月1日00:00:00 GMT)以来的秒数

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