在PHP for循环中为日期添加1个月


Add 1 month to dates in for loop in PHP

我想为for循环的每次迭代添加1个月的到期日期。下面是我的代码。

$qt = 3;
$sales_due_date = 2015-09-21;
for($i=0;$i<$qt;$i++){
    $time = date('Y-m-d', strtotime('+1 month', strtotime($sales_due_date)));
    $due_dates[] = $time;
}

结果

Array ( [0] => 2015-10-21 [1] => 2015-10-21 [2] => 2015-11-21) 

我想要的结果如下

Array ( [0] => 2015-09-21 [1] => 2015-10-21 [2] => 2015-11-21) 

您的代码没有更新$sales_due_date,因此它将始终返回相同的值。另外,如果您想要初始值,则需要稍微更改一下逻辑。也许这更适合您:

$qt = 3;
$sales_due_date = "2015-09-21";
// create a time stamp of the date
$time = strtotime($sales_due_date);
for($i=0;$i<$qt;$i++){
    // convert timestamp back to date string
    $date = date('Y-m-d', $time);
    $due_dates[] = $date;
    // move to next timestamp
    $time = strtotime('+1 month', $time)
 }

这应该会给出预期的结果

$qt = 3;
$sales_due_date = "2015-09-21";
for ($i = 0; $i < $qt; $i++) 
{
    $due_dates[] = $sales_due_date;
    $time = date('Y-m-d', strtotime('+1 month', strtotime($sales_due_date)));
    $sales_due_date = $time;
}

output

Array
(
    [0] => 2015-09-21
    [1] => 2015-10-21
    [2] => 2015-11-21
)

try this

$qt = 3;
$sales_due_date = 2015-09-21;
$time="";
for($i=0;$i<$qt;$i++){
    if($time == "")
    {
    $time = date('Y-m-d', strtotime('+1 month', strtotime($sales_due_date)));
    }
    else{
    $time = date('Y-m-d', strtotime('+1 month', strtotime($time)));        
    }
    $due_dates[] = $time;
}