格式化给定日期与DateTime,得到给定日期和今天日期作为结果

时间:2017-02-16 12:00:31

标签: php date datetime

function getMonthExceptions(){

    $countTimeline = $_POST['hiddenCountTimeline'];

    If($_POST['timeline_0Start']!=""){

        $exceptionList = array();

        for($d=0; $d<=2; $d++){

            If($countTimeline<=$d){

                $startTimeline = $_POST['timeline_' . $d . 'Start'];
                $endTimeline = $_POST['timeline_' . $d . 'End'];

                $begin = new DateTime($startTimeline);
                $endUnmodified = new DateTime($endTimeline);

                $end = $endUnmodified->modify( '+1 day' );

                $daterange = new DatePeriod($begin, new DateInterval('P1D'), $end);

                foreach($daterange as $date){
                    array_push($exceptionList, $date->format("Y-m-d"));
                }

            }

        }

        return($exceptionList);
    }
}

我使用此函数从输入字段中获取一些日期并将它们保存到数组中。

我的问题:

如果我使用$startTimeline格式化new DateTime()并打印$begin,我会得到此结果,即给定日期(2017-02-01)和今天日期两次(2017- 02-16):

DateTime Object ( [date] => 2017-02-01 00:00:00.000000 [timezone_type] => 3 [timezone] => Europe/Berlin ) DateTime Object ( [date] => 2017-02-16 12:45:32.000000 [timezone_type] => 3 [timezone] => Europe/Berlin ) DateTime Object ( [date] => 2017-02-16 12:45:32.000000 [timezone_type] => 3 [timezone] => Europe/Berlin ) 

但它应该是这样的:

DateTime Object ( [date] => 2017-02-01 00:00:00.000000 [timezone_type] => 3 [timezone] => Europe/Berlin )

有什么想法吗?

修改 通过删除If($countTimeline<=$d){并将$countTimeline放入上面的for循环来解决此问题。

0 个答案:

没有答案