PHP for / while循环 - 根据开始日期和间隔计算日期

时间:2017-02-02 21:15:47

标签: php for-loop while-loop

我的数据库中有两个字段,start_dateinterval。根据这些值,我想计算其他日期。例如:

为了简单起见,start_date是1月1日。间隔为3.这意味着每次日期月份应以3递增。最终结果应为:

01-01 // 1st of january
01-04 // 1st of april
01-07 // 1st of july
01-10 // 1st of october

另一个例子。 start_date可能是第3名。间隔为6.最终结果应为:

03-05 // 3rd of may
03-11 // 3rd of november

我尝试过这样的事情:

$interval = 3;

    for ($i = 1; $i <= 12; $i += $interval)
    {
        echo $start_date->addMonths($i)->format('m-d'); // I'm using carbon
    }

但结果是:

02-01
05-01
08-01
11-01

首先从1添加$i = 1,然后启动实际循环并每次添加3。我不确定我应该为$i = 1使用什么,或者是否可以使用for循环来完成。有什么提示吗?

PS。开始日期可以是任何日期,间隔可以是1到12之间的任何值。

2 个答案:

答案 0 :(得分:1)

试试这个:

$start_date = strtotime("2017-05-03");
$interval = 6;
for ($i = 0; $i <= 12; $i += $interval) {
   echo nl2br(date("Y-m-d", strtotime("+" . $i . " month", $start_date)) . "\n");
}

输出:

2017-05-03
2017-11-03
2018-05-03

答案 1 :(得分:0)

修正如下:

    for ($i = $interval; $i <= 12; $i += $interval)
    {
        echo $start_date->addMonths($i);
    }