fork download
  1. <?php
  2.  
  3. define ('ONE_DAY', 60*60*24);
  4. function end_date ($start_date, $working_days) {
  5. $weekday = date ('N', $start_date)-1;
  6. if ($weekday > 4) {
  7. $start_date -= ONE_DAY*($weekday-4);
  8. $weekday=4;
  9. }
  10. $modulo = $working_days%5;
  11. $days=7*(int)($working_days/5)+$modulo;
  12. $eweekday = $weekday + $modulo;
  13. if ($eweekday > 4)
  14. $days += max(2,7-$eweekday);
  15. return $start_date + ONE_DAY*$days;
  16. }
  17.  
  18. for ($j=0; $j < 7; ++$j) {
  19. $start_date = date_timestamp_get(date_create ('2013-12-30'))+ONE_DAY*$j;
  20. for ($i=10; $i < 15; ++$i)
  21. echo date ('d/m/Y',$start_date),' : ',date ('d/m/Y',end_date($start_date,$i)), PHP_EOL;
  22. }
Success #stdin #stdout 0.02s 20520KB
stdin
Standard input is empty
stdout
30/12/2013 : 13/01/2014
30/12/2013 : 14/01/2014
30/12/2013 : 15/01/2014
30/12/2013 : 16/01/2014
30/12/2013 : 17/01/2014
31/12/2013 : 14/01/2014
31/12/2013 : 15/01/2014
31/12/2013 : 16/01/2014
31/12/2013 : 17/01/2014
31/12/2013 : 20/01/2014
01/01/2014 : 15/01/2014
01/01/2014 : 16/01/2014
01/01/2014 : 17/01/2014
01/01/2014 : 20/01/2014
01/01/2014 : 21/01/2014
02/01/2014 : 16/01/2014
02/01/2014 : 17/01/2014
02/01/2014 : 20/01/2014
02/01/2014 : 21/01/2014
02/01/2014 : 22/01/2014
03/01/2014 : 17/01/2014
03/01/2014 : 20/01/2014
03/01/2014 : 21/01/2014
03/01/2014 : 22/01/2014
03/01/2014 : 23/01/2014
04/01/2014 : 17/01/2014
04/01/2014 : 20/01/2014
04/01/2014 : 21/01/2014
04/01/2014 : 22/01/2014
04/01/2014 : 23/01/2014
05/01/2014 : 17/01/2014
05/01/2014 : 20/01/2014
05/01/2014 : 21/01/2014
05/01/2014 : 22/01/2014
05/01/2014 : 23/01/2014