Calculating the number of business days between two dates in php

In this article, you will find a ready-made function that will help you calculate the number of working days in the range of two dates.

Calculating the number of business days between two dates in php
Calculating the number of business days between two dates in php

php script that can calculate the number of working days in the date range of your choice.

function getWorkingDays($startDate,$endDate,$holidays){
   $endDate = strtotime($endDate);
   $startDate = strtotime($startDate);

   $days = ($endDate - $startDate) / 86400 + 1;

   $no_full_weeks = floor($days / 7);
   $no_remaining_days = fmod($days, 7);

   $the_first_day_of_week = date("N", $startDate);
   $the_last_day_of_week = date("N", $endDate);

   if ($the_first_day_of_week <= $the_last_day_of_week) {
       if ($the_first_day_of_week <= 6 && 6 <= $the_last_day_of_week) $no_remaining_days--;
       if ($the_first_day_of_week <= 7 && 7 <= $the_last_day_of_week) $no_remaining_days--;
   }
   else {
       if ($the_first_day_of_week == 7) {
           $no_remaining_days--;

           if ($the_last_day_of_week == 6) {
               $no_remaining_days--;
           }
       }
       else {
           $no_remaining_days -= 2;
       }
   }

   $workingDays = $no_full_weeks * 5;
   if ($no_remaining_days > 0 )
   {
       $workingDays += $no_remaining_days;
   }

   foreach($holidays as $holiday){
       $time_stamp=strtotime($holiday);
       if ($startDate <= $time_stamp && $time_stamp <= $endDate && date("N",$time_stamp) != 6 && date("N",$time_stamp) != 7)
           $workingDays--;
   }

   return $workingDays;
}

How to use? First, we indicate the dates of the holidays:

$holidays = array("2008-12-25", "2008-12-26", "2009-01-01");

Then we call our function, passing in the start, end dates, and an array of holidays:

echo getWorkingDays("2008-12-22", "2009-01-02", $holidays);

 


Find out about the update of this script first in our telegram channel: https://t.me/proweblabxyz