Как посчитать рабочие дни в PHP: методы и примеры

Для расчета рабочих дней в PHP можно использовать несколько методов. Вот несколько примеров:

Метод 1: использование классов DateTime и DateInterval

function calculateBusinessDays($startDate, $endDate) {
    $start = new DateTime($startDate);
    $end = new DateTime($endDate);
    $interval = new DateInterval('P1D');
    $interval->d = 1;
    $period = new DatePeriod($start, $interval, $end);
    $businessDays = 0;

    foreach ($period as $date) {
        if ($date->format('N') < 6) { // Monday to Friday (1 to 5)
            $businessDays++;
        }
    }

    return $businessDays;
}
// Usage example
$startDate = '2023-01-01';
$endDate = '2023-01-31';
$businessDays = calculateBusinessDays($startDate, $endDate);
echo "Number of business days: " . $businessDays;

Метод 2: использование функции strtotime

function calculateBusinessDays($startDate, $endDate) {
    $start = strtotime($startDate);
    $end = strtotime($endDate);
    $businessDays = 0;

    while ($start <= $end) {
        $dayOfWeek = date('N', $start);
        if ($dayOfWeek < 6) { // Monday to Friday (1 to 5)
            $businessDays++;
        }
        $start = strtotime('+1 day', $start);
    }

    return $businessDays;
}
// Usage example
$startDate = '2023-01-01';
$endDate = '2023-01-31';
$businessDays = calculateBusinessDays($startDate, $endDate);
echo "Number of business days: " . $businessDays;

Эти методы рассчитывают количество рабочих дней (с понедельника по пятницу) между заданной датой начала и окончания. Вы можете изменить их в соответствии с вашими требованиями.