주말을 건너 뛴 날짜 구하는 식 조언좀요..

주말을 건너 뛴 날짜 구하는 식 조언좀요..

QA

주말을 건너 뛴 날짜 구하는 식 조언좀요..

본문


$_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

 

답변을 작성하시기 전에 로그인 해주세요.
전체 123,128 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT