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);

 



on the site are taken from open sources. The site does not contain files for download. All links to files from open sources. Owners of copyrights to the material may request removal of the post from the site.