[PHP] 현재일을 기준으로 잔여일 구하기 질문.. 정보
[PHP] 현재일을 기준으로 잔여일 구하기 질문..본문
일전에도 한번 질문을 드렸었는데 해결이 되지 않아 이렇게 다시 한번 질문 드립니다.
현재 회원가입폼을 수정하여 서비스의 이용시작과 만료일을 체크하는 멤버리스트를 만들고
있습니다. mb_2 라는 여분필드2에 서비스 만료일이 '2009-12-25'와 같은 형식으로 입력이
되면 멤버리스트상 '잔여일' 테이블에서 'xx일' 이라고 명시가 되도록 할려고 하는데 어느정도
출력까지는 되게 하였는데, 본 게시물 제일 하단 첨부이미지와 같이 날짜가 허무맹랑하게
표시가 됩니다. 어떤건 정상적으로 몇일 남았다고 나오는데 어떤것들은 수백일이 더해져서
나오는데, 무엇 때문일까요??
아래는 시간 계산을 위해 작성한 소스부분입니다//해당 소스도 스킨게시판에 스킨소스를 보고
적용을 해보았는데, 어떤 부분이 맞지 않아 날짜 표기가 저렇게 나오는지 모르겠습니다.
현재 마감일은 mb_2 이라는 여분필드에 입력이 되어 있습니다.
//남은시간계산하기
$year = substr("$row[mb_2]",0,4); // 년
$month = substr("$row[mb_2]",-4,2); // 월
$day = substr("$row[mb_2]",-2,2); // 일
$date1=mktime(0,0,0,$month,$day,$year); //end타임의 timestamp값
$date2=mktime();
$total_secs=abs($date1 - $date2);
$diff_in_days = floor($total_secs / 86400);
$rest_hours = $total_secs % 86400;
$diff_in_hours = floor($rest_hours / 3600);
$rest_mins = $rest_hours % 3600;
$diff_in_mins = floor($rest_mins / 60);
$diff_in_secs = floor($rest_mins % 60);
$time_diff = $diff_in_days ."일";
//남은시간계산끝
그리고,,
잔여일을 표시할 테이블에는..
<td><font color=red><b>$time_diff</b></font></td>
이렇게 하였습니다.
그럼 아래와 같이 잘못된 날짜가 출력이 됩니다.
스샷 제일 하단은 정확하게 출력이 되었는데 그 위로 3개는 잘못된 날짜 계산인듯 합니다.
무엇때문일까요? 가르침을 주시면 감사하겠습니다. (__)
댓글 전체
$enddate = '2009-12-22';
echo date("z", strtotime($enddate)) - date("z", strtotime($startdate)); // 21 출력
시작일과 마감일 값을 해당 여분필드로 변경해서 사용하십시오.
만약 잔여일을 마감일 - 현재일로 기준하고 싶다면,
echo date("z", strtotime($enddate)) - date("z", strtotime("now")); // 21 출력
와 같이 사용하십시오.
작성 소스로 하시는 경우 -5로 바꾸시면 될 것 같네요.
sjsjin 님도 정성스러운 답변 감사드립니다!!