주말을 건너 뛴 날짜 구하는 식 조언좀요..
본문
$_refund = "10"; //환불을 요청할 수 있는 날짜
$todayweek=date("w", $g4[server_time]);
if ($w%6==0) $plusday=$_refund+1;
else $plusday=$_refund;
$limit_day=date("y-m-d", $g4[server_time]+86400* $plusday);
echo $limit_day;
환불을 요청하는 날짜를 설정하면 주말은 빼고 평일만 계산하려 합니다.
즉 10일을 입력하면 오늘부터 10일 후 날짜를 찾아내는데 10일동안 주말이 있으면 빼구 평일 10일만 계산해 limit_day에 담아야 합니다.
소스가 좀 초보티 나는데요..ㅠㅠ
위처럼 하니까.. 2~3일정도는 잘되네요.. 하지만 주말이 두번 중복되면 그때부턴 안되네요..
예를 들어 15일 입력하구 돌리면 처음 오는 주말만 인식하고 그담 주말이 또 걸치면 그건 인식 못해요..
그래서..
$todate1= date("y-m-d", $g4[server_time]);
for ($i=0; $i<$_refund; $i++) {
$plusDay = $i+1;
$now_day = date("y-m-d",strtotime($todate1) + (86400 * $plusDay));
$todayweek =date('w', strtotime($now_day));
if($w%6==0) $limit_cnt += 1;
else $limit_cnt =$limit_cnt;
$limit_day = date("y-m-d",strtotime($todate1) + (86400 * $limit_cnt));
}
echo $limit_day;
환불일수 만큼 for문으로 돌려서 계속 요일찾아 평일을 카운트해서 해볼까 삽질했는데..
잘 안되서 고수님께 조언 부탁드립니다.
!-->!-->
답변 2
여러군데서 틀렸어요. 누적되는 !!! 평일을 찾아야 되요.
평일 11일째인지, 10일째인지도 정하셔야 하고요. 아래는 당일 빼고 10일째입니다.
그리고 소스엔 없는데. 공휴일도 체크해야 되요. <<< 이건 로직에 없습니다. 좀 어렵고 DB 이용해야 해요.
$targetRefundDay = 10;
$sumRefundDay = 0;
while( $sumRefundDay <= $targetRefundDay ) {
$atDay = date("y-m-d",strtotime($startDay) + (86400 * $sumRefundDay));
$atDayWeekNum =date('w', strtotime($atDay));
if( $atDayWeekNum != 6 ) $sumRefundDay++;
}
echo $sumRefundDay ; // 10
영업일 구하는 방법을 이용해 보세요.
https://codereview.stackexchange.com/questions/51895/calculate-future-date-based-on-business-days
답변을 작성하시기 전에 로그인 해주세요.