0

我有这个PHP function

function calculateNextDate($startDate, $days)
{
    $dateTime = new DateTime($startDate);

        while($days) {
            $dateTime->add(new DateInterval('P1D'));    

            if ($dateTime->format('N') < 6) {
                $days--;
            }
        }

    return $dateTime->format('Y-m-d');
}

它计算从给定天数的开始日期开始的日期,并跳过周末。

如果我回应这个:

echo calculateNextDate('2012-10-01', '10');

它将打印:

2012-10-15

哪个是错的... 2012-10-01+ 10 个工作日是2012-10-12

知道为什么它会增加一天吗?

4

1 回答 1

3

亲爱的先生,1 + 10 = 11,而不是 10。

因此,如果你要求用你的算法将 10 天加到 10 月 1 日,它不会给出 12 号星期五,它真的给出了 15 号星期一......

你想星期五吗?然后是9天...

于 2012-10-11T15:44:51.920 回答