Skip to content

Instantly share code, notes, and snippets.

@cygeorgel
Created May 8, 2020 20:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cygeorgel/ea972e160bf8e92083c0d26d9a5acc6b to your computer and use it in GitHub Desktop.
Save cygeorgel/ea972e160bf8e92083c0d26d9a5acc6b to your computer and use it in GitHub Desktop.
public function nextWorkingDay(Carbon $date)
{
$holidays = [];
$holidays[] = Carbon::create($date->format('Y'), 1, 1);
$holidays[] = Carbon::create($date->format('Y'), 5, 1);
$holidays[] = Carbon::create($date->format('Y'), 5, 8);
$holidays[] = Carbon::create($date->format('Y'), 7, 14);
$holidays[] = Carbon::create($date->format('Y'), 8, 15);
$holidays[] = Carbon::create($date->format('Y'), 11, 1);
$holidays[] = Carbon::create($date->format('Y'), 11, 11);
$holidays[] = Carbon::create($date->format('Y'), 12, 25);
$holidays[] = Carbon::create($date->format('Y'), 3, 21)->addDays(easter_days($date->format('Y')));
$holidays[] = Carbon::create($date->format('Y'), 3, 21)->addDays(easter_days($date->format('Y')) + 39);
$holidays[] = Carbon::create($date->format('Y'), 3, 21)->addDays(easter_days($date->format('Y')) + 50);
$isWorkingDay = false;
while (! $isWorkingDay) {
if (! in_array($date, $holidays)
&& $date->format('D') != 'Sat'
&& $date->format('D') != 'Sun') {
$isWorkingDay = true;
} else {
if ($date->format('D') == 'Sat') {
$date->addDays(2);
} else {
$date->addDays(1);
}
}
}
return $date;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment