php添加方法工作不正确

时间:2015-07-13 20:42:21

标签: php

我正在学习PHP,我遇到了一些麻烦。我的功能是返回"里程碑"与他们插入的相同日期。我相信我错误地使用了add()方法。三江源。

PHPplayground:http://www.tehplayground.com/#cARB1wjth

$milestones = null;
$milestones = createMilestone($milestones, true, 10, "15-1-1", "birthday" );
var_dump( $milestones );

function createMilestone($milestones, $forward, $days, $startDate, $milestoneName ){
    if ( is_string($startDate)){
        $date = DateTime::createFromFormat("Y-m-d", $startDate );
    }else if(is_array($startDate) ){
        $date = $startDate["date"];
    }else{
        $date = $startDate;
    };

    $daysInterval = DateInterval::createFromDateString($days);
    if ($forward){
        $date->add($daysInterval);
    }else{
        $date->sub($daysInterval);
    }


    $milestones[$milestoneName]['date'] = $date;

    return $milestones;
}

1 个答案:

答案 0 :(得分:1)

您需要使用:

$daysInterval = DateInterval::createFromDateString($days . ' days');

请参阅DateInterval的文档here以及您可以使用的不同日期格式(名为relative format)的页面。

顺便说一句,如果您提供类似"15-1-1"的日期时间,则正确的格式不是"Y-m-d",而是"y-m-d" (小写' y')