Codeigniter开始和结束日期验证

时间:2017-09-15 15:53:59

标签: php codeigniter validation

如果我在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);
        }

有没有解决方案摆脱这个问题?请帮忙......

1 个答案:

答案 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';