2017-09-09 51 views
2

我已經設法讓下面的代碼爲'平日'工作,但排除我的特殊日子,但是:使用PHP我如何將週六納入我的工作日?

我提供'7個工作日沒有存款layby',雖然我的店只在週日關閉。所以我需要我的「週日」來包括所有的週六。

$tdate = date("Y-m-d"); 
$specialdays = ['22-09-2017', '03-10-2017', '14-11-2017', '17-12-2017']; 
$i = 7; 
$sevenbusinessdays = date('d-m-Y', strtotime($tdate . ' +' . $i . ' 
Weekday')); 

while (in_array($sevenbusinessdays, $specialdays)) { 
    $i++; 
    $sevenbusinessdays = date('d-m-Y', strtotime($tdate . ' +' . $i . ' Weekday')); 
} 

我相信使用上面的代碼的答案是事做

date('w', strtotime($tdate)) == 6 

雖然我不能確定如何將它。我試過以下,但它不工作:

$tdate = date("Y-m-d"); 
$specialdays = ['22-09-2017', '03-10-2017', '14-11-2017', '17-12-2017']; 
$i = 7; 
$sevenbusinessdays = date('d-m-Y', strtotime($tdate . ' +' . $i . ' Weekday' . date('w', strtotime($tdate)) == '6')); 

while (in_array($sevenbusinessdays, $specialdays)) { 
    $i++; 
    $sevenbusinessdays = date('d-m-Y', strtotime($tdate . ' +' . $i . ' Weekday' . date('w', strtotime($tdate)) == '6')); 
} 

print $sevenbusinessdays; 

這徹底失敗了,哈哈,任何的指導和幫助,將不勝感激。我覺得我很接近,只是沒有得到它。

感謝您的任何幫助,它是非常感激的。 :-)

+0

你想做什麼?我看不出你想做什麼。那些特殊的日子是什麼?什麼是輸入,什麼是輸出和預期輸出。 – Andreas

+0

@Andreas對不起,我忘了包括$ tdate是預設日期。無論哪種方式,ishegg給了我一個有道理的例子。感謝您的回覆Andreas – aussiedan

回答

1

你需要一個循環,增加天,如果:

  • ,直到你加入它不是一個星期日或
  • 它不是在特殊日子名單

7天

<?php 
$tdate = date("Y-m-d"); 
$specialdays = ['15-09-2017', '20-09-2017', '14-11-2017', '17-12-2017']; 
$days = 0; 
$i = 0; 
while ($days < 7) { 
    $i++; 
    $day = strtotime($tdate . ' +' . $i . ' day'); 
    if (date("w", $day) === "0" || in_array(date("d-m-Y", $day), $specialdays)) { 
     continue; 
    } 
    $days++; 
} 
$sevenbusinessdays = date('d-m-Y', strtotime($tdate . ' +' . $i . ' day')); 
echo $sevenbusinessdays; 

Demo

+0

爲什麼在每次迭代中更新'$ sevenbusinessdays'變量? – Andreas

+0

頭不工作。謝謝! – ishegg

+0

@ishegg非常感謝我所需要的:-) – aussiedan

相關問題