2013-12-19 41 views
-1

我以多種格式(包括C/C +和Javascript)看過此問題。我也看到了這個問題,它的形式是... How to calculate a span between dates excluding weekends or holidays。但是,假設你已經有了一個特定的日期。比方說,例如,2014-01-04,我想在排除任何週末或節假日前三個工作日計算日期($diff)。直接扣減三天將導致2014-01-01,所以我們知道這是行不通的。所以,我減去另一天,得到2013-12-31 - 再次,不好。另一個嘗試給我們2013-12-30。最後,我們有兩個日期之間的三個實際工作日!但是,讓我們只是說,,因爲它會在2014年,2013-12-30落在一個星期天....男人,哦,男人 - 再次發起!好吧,我想你明白了。 如何在世界上獲得我想要的結果?如何避免在日期中添加或減少日期的週末或節假日

回答

-1

那麼,我已經寫了一個漂亮的PHP函數來解決這個難題,並希望與我的編碼人員分享它,並接受對它的構成的建設性批評。

function onlyWorkDays($d) { 
    $holidays = array('2013-12-25','2013-12-31','2014-01-01','2014-01-20','2014-02-17','2014-05-26','2014-07-04','2014-09-01','2014-10-13','2014-11-11','2014-11-27','2014-12-25','2014-12-31'); 
    while (in_array($d->format("Y-m-d"), $holidays)) { // HOLIDAYS 
     $d->sub(new DateInterval("P1D")); 
    } 
    if ($d->format("w") == 6) { // SATURDAY 
     $d->sub(new DateInterval("P1D")); 
    } 
    if ($d->format("w") == 0) { // SUNDAY 
     $d->sub(new DateInterval("P2D")); 
    } 
    return $d; 
} 
+0

週末檢查也必須在while循環中。用'2015-12-27'測試你的功能,你將在12月25日星期五結束。 –

相關問題