Get Working days for a date range in PHP
Example helps you to get working days falling between two dates.
PHP Code
$DFROM = '2020-01-01';
$DTO = '2020-06-30';
$WD = 0;
while (strtotime($DFROM) <= strtotime($DTO))
{
$DOW = date('w', strtotime($DFROM));
if ($DOW < 5){$WD++; }
$DFROM = date ("Y-m-d", strtotime("+1 day", strtotime($DFROM)));
}
echo $WD;
Definition and Usage
$DFROM = '2020-01-01'; sets start date & saves in a variable
$DTO = '2020-06-30'; sets end date & saves in a variable
$WD = 0; declare & set WD variable to 0
while (strtotime($DFROM) <= strtotime($DTO)) { while loop starts to loop through complete date range
strtotime is a built in PHP function which Parses English textual datetimes into Unix timestamps
it will start the loop & continues doing so until end date reaches.
$DOW = date('w', strtotime($DFROM));
It gets numeric representation of the day (0 for Sunday, 6 for Saturday) & assigns the value to $DOW variable
if ($DOW < 5){$WD++; }
If statement evaluates the value & if it is less than 5 (working days) it increments the $DOW value
$DFROM = date ("Y-m-d", strtotime("+1 day", strtotime($DFROM))); }
Next line increases the date to re-start code execution to loop through further
echo $WD;
finally display the no of working stored in $WD variable
Code can be used as function given below
echo GetWorkingDays($DFROM, $DTO);
function GetWorkingDays($DFROM, $DTO)
{
$WD = 0;
while (strtotime($DFROM) <= strtotime($DTO))
{
$DOW = date('w', strtotime($DFROM));
if ($DOW < 5){$WD++; }
$DFROM = date ("Y-m-d", strtotime("+1 day", strtotime($DFROM)));
}
return $WD;
}
Related Study
Loop, While loop, if elseif else, strtotime function, date function, date reference