【问题标题】:PHP function to count business days adds a day to much计算工作日的PHP函数增加了一天
【发布时间】:2012-10-11 15:40:58
【问题描述】:

我有这个PHPfunction

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

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

【问题讨论】:

  • 2012-10-15 我觉得合适吗? 2012-10-12 将是第 9 个工作日。

标签: php function date


【解决方案1】:

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

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

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

【讨论】:

  • 哦,我的错。有什么方法可以让我的function 将开始日计为 1 天?
  • 从总天数中删除 1 移动?如果它已经在工作,为什么要更改算法?只需从总天数中删除 1 天即可移动。但从技术上讲,问题在于理解如何正确使用该功能。今天提前 1 天不是今天,而是明天
猜你喜欢
  • 2019-02-08
  • 1970-01-01
  • 2012-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多