Следующий день недели
Поиск следующего дня недели с определенной даты (не включая субботу или воскресенье):
echo date('Y-m-d', strtotime('2011-04-05 +1 Weekday'));
Вы также можете сделать это спеременная даты, конечно:
$myDate = '2011-04-05';
echo date('Y-m-d', strtotime($myDate . ' +1 Weekday'));
ОБНОВЛЕНИЕ: Или, если у вас есть доступ к PHP-класс DateTime (очень вероятно):
$date = new DateTime('2018-01-27');
$date->modify('+7 weekday');
echo $date->format('Y-m-d');
Хотите пропустить праздники?:
Хотя на оригинальном плакате упоминалось: «Мне не нужно рассматривать праздники», если вы действительно хотите игнорировать праздники, простопомните - «Праздники» - это просто массив дат, которые вы не хотите включать, и отличаются в зависимости от страны, региона, компании, человека ... и т. д.
Просто поместите приведенный выше код в функцию, которая исключает/ проходит мимо дат, которые вы не хотите включать.Примерно так:
$tmpDate = '2015-06-22';
$holidays = ['2015-07-04', '2015-10-31', '2015-12-25'];
$i = 1;
$nextBusinessDay = date('Y-m-d', strtotime($tmpDate . ' +' . $i . ' Weekday'));
while (in_array($nextBusinessDay, $holidays)) {
$i++;
$nextBusinessDay = date('Y-m-d', strtotime($tmpDate . ' +' . $i . ' Weekday'));
}
Я уверен, что приведенный выше код можно упростить или сократить, если хотите.Я попытался написать это простым для понимания способом.