我想向当前日期添加一个月。我在stackoverflow上找到了一个代码,它可以工作-但是,返回错误的一天。它会从当前日期中删除一天。
代码:
function add_months($months, DateTime $dateObject)
{
$next = new DateTime($dateObject->format('Y-m-d H:i:s'));
$next->modify('last day of +'.$months.' month');
if($dateObject->format('d') > $next->format('d')) {
return $dateObject->diff($next);
} else {
return new DateInterval('P'.$months.'M');
}
}
function endCycle($d1, $months)
{
$date = new DateTime($d1);
$newDate = $date->add(add_months($months, $date));
$newDate->sub(new DateInterval('P1D'));
$dateReturned = $newDate->format('Y-m-d H:i:s');
return $dateReturned;
}
$today = date("Y-m-d H:i:s");
$ymd = DateTime::createFromFormat('Y-m-d H:i:s', $today)->format('Y-m-d H:i:s');
echo(endCycle($ymd, 1)); //returns wrong day
因此,当我购买一个月时,我有29天的时间。当我再次购买时,我得到-2天,因为它从数据库中现有的过期日期中删除了这一天。 日期计算出了什么问题?..
谢谢:) 最好的问候
答案 0 :(得分:0)
请不要将简单的任务复杂化。
http://php.net/manual/en/datetime.modify.php
<?php
$date = new DateTime('2006-12-12');
$date->modify('+1 month');
echo $date->format('Y-m-d');
?>
这就是您所需要的。