<?php
$dateTime = DateTime::createFromFormat('d M Y', '12 Dec 2016');
function getWorkingDayAfterNDays(DateTime $dateTime, $n) {
if ($n < 0) {
throw new Exception("Число должно быть положительным {$n}");
}
while (true) {
$dateTime->modify('+1 day');
if (isWorkingDay($dateTime)) {
$n--;
if ($n === 0) {
return $dateTime;
}
}
}
}
function isWorkingDay(DateTime $dateTime) {
$workDays = [
'19-12-16',
'20-12-16',
'23-12-16',
'24-12-16',
'25-12-16',
'26-12-16',
];
return in_array($dateTime->format('d-m-y'), $workDays); }
var_dump(getWorkingDayAfterNDays
($dateTime, 5));
PD9waHAKCiRkYXRlVGltZSA9IERhdGVUaW1lOjpjcmVhdGVGcm9tRm9ybWF0KCdkIE0gWScsICcxMiBEZWMgMjAxNicpOwogCmZ1bmN0aW9uIGdldFdvcmtpbmdEYXlBZnRlck5EYXlzKERhdGVUaW1lICRkYXRlVGltZSwgJG4pIHsKICAgIGlmICgkbiA8IDApIHsKICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCLQp9C40YHQu9C+INC00L7Qu9C20L3QviDQsdGL0YLRjCDQv9C+0LvQvtC20LjRgtC10LvRjNC90YvQvCB7JG59Iik7CiAgICB9CiAKICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgJGRhdGVUaW1lLT5tb2RpZnkoJysxIGRheScpOwogICAgICAgIGlmIChpc1dvcmtpbmdEYXkoJGRhdGVUaW1lKSkgewogICAgICAgICAgICAkbi0tOwogICAgICAgICAgICBpZiAoJG4gPT09IDApIHsKICAgICAgICAgICAgICAgIHJldHVybiAkZGF0ZVRpbWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KCmZ1bmN0aW9uIGlzV29ya2luZ0RheShEYXRlVGltZSAkZGF0ZVRpbWUpIHsKICAgICR3b3JrRGF5cyA9IFsKICAgICAgICAnMTktMTItMTYnLAogICAgICAgICcyMC0xMi0xNicsCiAgICAgICAgJzIzLTEyLTE2JywKICAgICAgICAnMjQtMTItMTYnLAogICAgICAgICcyNS0xMi0xNicsCiAgICAgICAgJzI2LTEyLTE2JywKICAgIF07CiAKICAgIHJldHVybiBpbl9hcnJheSgkZGF0ZVRpbWUtPmZvcm1hdCgnZC1tLXknKSwgJHdvcmtEYXlzKTsKfQoKdmFyX2R1bXAoZ2V0V29ya2luZ0RheUFmdGVyTkRheXMoJGRhdGVUaW1lLCA1KSk7Cg==