fork download
  1. <?php
  2.  
  3. $dateTime = DateTime::createFromFormat('d M Y', '12 Dec 2016');
  4.  
  5. function getWorkingDayAfterNDays(DateTime $dateTime, $n) {
  6. if ($n < 0) {
  7. throw new Exception("Число должно быть положительным {$n}");
  8. }
  9.  
  10. while (true) {
  11. $dateTime->modify('+1 day');
  12. if (isWorkingDay($dateTime)) {
  13. $n--;
  14. if ($n === 0) {
  15. return $dateTime;
  16. }
  17. }
  18. }
  19. }
  20.  
  21. function isWorkingDay(DateTime $dateTime) {
  22. $workDays = [
  23. '19-12-16',
  24. '20-12-16',
  25. '23-12-16',
  26. '24-12-16',
  27. '25-12-16',
  28. '26-12-16',
  29. ];
  30.  
  31. return in_array($dateTime->format('d-m-y'), $workDays);
  32. }
  33.  
  34. var_dump(getWorkingDayAfterNDays($dateTime, 5));
  35.  
Success #stdin #stdout 0.01s 52488KB
stdin
Standard input is empty
stdout
object(DateTime)#1 (3) {
  ["date"]=>
  string(26) "2016-12-25 22:21:19.000000"
  ["timezone_type"]=>
  int(3)
  ["timezone"]=>
  string(3) "UTC"
}