我正在尝试比较start date
和end date
,但它的工作时间相同。但我进入两个不同的月份是不行的。
例如:我输入start date= 23/12/2013
和End date=06/12/2013
它会正常工作,但我输入Start date = 23/12/2013
和End 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 :(得分:0)
试试这个
$startDate = strtotime(str_replace('/', '-', $this->input->post('start_date')));
$endDate = strtotime(str_replace('/', '-', $this->input->post('end_date')));
更新:上述文件中的重要提示
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.');
}