linux/php

php 휴일을 제외한 업무 일수 계산

mysop 2021. 12. 2. 16:47
반응형
//휴일을 제외한 업무 일 수 계산
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;
}

$holidays=array("2019-06-11","2020-07-01","2020-01-01");
echo getWorkingDays("2019-06-01","2019-07-01", $holidays)

 

엑셀 networkdays 함수와 같은 효과를 얻을수 있음

잘 사용하겠습니다.

 

출처 : https://devlink.tistory.com/m/236

 

php 휴일을 제외한 업무 일수 계산

//휴일을 제외한 업무 일 수 계산 function getWorkingDays($startDate, $endDate, $holidays){ $endDate = strtotime($endDate); $startDate = strtotime($startDate); $days = ($endDate - $startDate) / 86400..

devlink.tistory.com

 

반응형

'linux > php' 카테고리의 다른 글

실시간 화면 출력 꼼수..  (0) 2021.12.13
PhpSpreadsheet 설치하기  (0) 2021.12.07
php엑셀 한글깨짐  (0) 2021.11.05
php 쉘에서 실행시 parameter 받기  (0) 2021.10.25
(PHP CURL)토스 페이먼트 API 응답없는 문제  (0) 2021.09.14