Как указать субботу в качестве дня недели для strtotime
Мне нужно добавить 2 рабочих дня к текущей дате. Я собирался использовать для этого strtotime, но будни strtotime не включают субботу.
$now = date("Y-m-d H:i:s");
$add = 2;
$format = "d.m.Y";
if(date('H') < 12) {
$add = 1;
}
$date = strtotime($now . ' +'.$add.' weekdays');
echo date($format, $date);
Это будет вывод во вторник, если вы запустите его в пятницу. Но на самом деле он должен вернуться в понедельник.
Как я могу добавить субботу в качестве дня недели?
1 ответ:
Получить следующий рабочий день от определенной даты + номер смещения дня:
function get_next_business_date($from, $days) { $workingDays = [1, 2, 3, 4, 5, 6]; # date format = N (1 = Monday, ...) $holidayDays = ['*-12-25', '*-01-01', '2013-12-24']; # variable and fixed holidays $from = new DateTime($from); while ($days) { $from->modify('+1 day'); if (!in_array($from->format('N'), $workingDays)) continue; if (in_array($from->format('Y-m-d'), $holidayDays)) continue; if (in_array($from->format('*-m-d'), $holidayDays)) continue; $days--; } return $from->format('Y-m-d'); # or just return DateTime object } print_r( get_next_business_date('today', 2) );