Current Article:

How to calculate business days using PHP?

How to calculate business days using PHP?

Get the number of working days without holidays between two dates:

Code:

function number_of_working_days($from, $to) {
  $workingDays = [1, 2, 3, 4, 5]; # date format = N (1 = Monday, ...)
  $holidayDays = ['*-12-25', '*-01-01', '2025-12-23']; # variable and fixed holidays

  $from = new DateTime($from);
  $to = new DateTime($to);
  $to->modify('+1 day');
  $interval = new DateInterval('P1D');
  $periods = new DatePeriod($from, $interval, $to);

  $days = 0;
  foreach ($periods as $period) {
    if (!in_array($period->format('N'), $workingDays)) continue;
    if (in_array($period->format('Y-m-d'), $holidayDays)) continue;
    if (in_array($period->format('*-m-d'), $holidayDays)) continue;
    $days++;
  }
  return $days;
}

Use example:

echo number_of_working_days('2025-09-21', '2025-09-28');

Output:

5