DateTime :: createFromFormat即使不应该返回false

时间:2015-07-24 01:22:27

标签: php

我正在努力确保日期是有效日期,就像这样2015年7月24日 - 2015年7月24日

这是我的代码,以确保它的价值

//split the start and end date in to 2 and compare both to a real date to make sure they're valid
        $newdate = explode("-", $start);

        //echo 1;
        //make sure date 2 is set
        if(!isset($newdate[1])): Session::set('error', 13); return false; endif;

        //check if newdate 0 and 1 are real dates
        $date1 = DateTime::createFromFormat('m-d-Y', str_replace("/","-",$newdate[0]));
        $date2 = DateTime::createFromFormat('m-d-Y', str_replace("/","-",$newdate[1]));

        echo date("m-d-Y").'<br/>';
        echo str_replace("/","-",$newdate[0]);

        var_dump($date1);
        var_dump($date2);
        //not valid dates
        if($date1 == false || $date2 == false): Session::set('error',13); return false; endif;

我试过了,没有str_replace,我比较了日期(“m-d-Y”);使用str_replace来我的$ newdate并且它们匹配完美,但即使它们是有效的,我仍然会得到(bool)我的日期错误

1 个答案:

答案 0 :(得分:0)

我首先将爆炸修复为' - ',因为'-'会在日期字符串的开头和结尾留下额外的空格。这将解决它。如下所示:https://eval.in/404554

接下来,您不需要为它们打扰str_replace。

$dates = '07/24/2015 - 07/24/2015';
$newdate = explode(" - ", $dates);

$date1 = DateTime::createFromFormat('m/d/Y', $newdate[0]);
$date2 = DateTime::createFromFormat('m/d/Y', $newdate[1]);

有效日期:https://eval.in/404555