상세 컨텐츠

본문 제목

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

linux/php

by 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

관련글 더보기