如果我在2017年设置了开始日期和结束日期,我会得到准确的结果。但是当 2016年10月15日的开始日期为 2017年9月15日它无效并显示错误消息 -
$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 :(得分:0)
PHP不知道你的字符串是什么,如果值来自发布的数据,那么它们就是字符串:
// These are strings
$s1 = '15-October-2016';
$s2 = '15-September-2016';
相反,您需要为比较创建日期时间对象
$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';
尝试使用此代码并更改日期,您会看到我是对的。
更新:
从技术上讲,你也可以使用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';