2012-10-11 85 views
0

我有这个PHPfunctionPHP函数来计算工作日增加了一天多

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

为什么它添加任何想法另一天?

+1

2012-10-15看起来适合我吗? 2012-10-12将是第9个营业日。 – Jason

回答

3

我的SIR,1 + 10 = 11,而不是10

因此,如果你问10天添加到10月1日与你的算法,它并没有给周五12,它确实给出了星期一15 ...

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

+0

哦,我的坏。有没有什么办法可以让我的'函数'在开始日计算为1天? – David

+0

从移动的总天数中移除1个?为什么改变算法,如果它已经工作?只需从总日数中移除一天即可移动。但技术上,问题是如何正确使用功能的理解。今天提前1天不是今天,而是明天 –