我正在学习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;
}
您需要使用:
$daysInterval = DateInterval::createFromDateString($days . ' days');
请参阅此处的DateInterval文档和可以使用的各种日期格式(称为相对格式)的页面。
和BTW,如果你给一个DateTime像"15-1-1"
,正确的格式不是"Y-m-d"
,而是"y-m-d
"(小写' y
')