2012-10-11 86 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天不是今天,而是明天 –