날짜 계산질문입니다(영업일)
본문
오늘날짜 21.04.22(목) 을 기준으로 주말,공휴일,매월말일을 제외 한 +3영업일을 구하고자 합니다.
21.04.22(목)의 3영업일이면 21.04.27(화) 입니다.
매월말일도 쉬는날로 쳐줘야 하는데 너무 어렵습니다..
이걸 php 로 구하고자 하는데 어떻게 해야 하는지 궁금합니다.
function calcDate($date, $diff) {
if( $diff < 0) {
$sign = "-";
} else {
$sign = "+";
}
// 1. 기본적으로 토일을 제외하고 영업일을 계산해준다.
do {
$date = date("Y-m-d", strtotime("{$sign}1 days", strtotime($date))); // 토,일 이면 한번 더 돈다.
if (date("w", strtotime($date)) != 0 && date("w", strtotime($date)) != 6 ) {
if ($sign === "-") { $diff++;
} else {
$diff--;
}
}
}
while ($diff != 0);
return $date;
}
답변 1
공휴일은 적용하지 못했습니다.
공휴일을 array 변수에 저장한다면 in_array() 를 활용해 볼 수 있습니다.
$date2 = add_days('2021-04-22', 3);
echo $date2;
$date2 = add_days('2021-04-28', 3);
echo $date2;
function add_days($date, $days) {
$last_day = date('Y-m-t', strtotime($date));
for ($i = 0; $i < $days; $i++) {
$r = strtotime('+1 day', strtotime($date));
$date = date('Y-m-d', $r);
$yoil = date('N', $r);
if ($yoil > 5) // 토일 제외
$days++;
if ($date == $last_day) // 말일 제외
$days++;
}
return $date;
}
답변을 작성하시기 전에 로그인 해주세요.