남은 날짜 계산하여 처리하기 도움 요청드립니다. 채택완료
안녕하세요.
아래 그림처럼 작성일과 마감일을 목록에 표시하였는데요.. 그 옆에 남은시간을 계산하여
보이려고 합니다. 고수님들 처리하는 코드 좀 알려 주시면 정말 고맙겠습니다.

작성일
<td class="text-center font-11 en">
<?php echo ($list[$i]['it_time']); //작성일자 ?>
</td>
마감일자
<td class="text-center font-11 color-red en">
<?php echo date("Y년 m월 d일", $list[$i]['pt_end']);//마감일자?>
</td>
남은시간
???????
답변 3개
남은시간
<?php
$date1 = strtotime($list[$i]['it_time']);
$date2 = strtotime($list[$i]['pt_end']);
$timeleft = $date2 - $date1;
$daysleft = round((($timeleft/24)/60)/60);
echo $daysleft . '일';
?>
답변에 대한 댓글 9개
$date1 = strtotime($list[$i]['it_time']);
$date2 = $list[$i]['pt_end'];
$timeleft = $date2 - $date1;
$daysleft = round((($timeleft/24)/60)/60);
echo $daysleft . '일';
?>
4일하고 몇시간의 시간차이가 5일이라는 결과 값으로 표현 되네요.. 4일00시 라고 표현 되려면 어떤 상수를 변경해야 할까요??
2021-03-12 02:18:13 ~ 2021-03-16 18:13:00
->
$daysleft = floor((($timeleft/24)/60)/60);
$d1= new DateTime($list[$i]['it_time']);
$d2= new DateTime(date('Y-m-d H:i:s', $list[$i]['pt_end']));
$interval = $d1->diff($d2);
echo $interval->days . '일 ' . $interval->h . '시간;
첫번째 결과 값 : 4일
두번째 결과 값 : 4일 20시간
두번째로 적용하였습니다. 감사합니다..
알려주신 코드가 맞기는 한데요.. 제가 원했던 것은 그게 아니었네요...ㅎㅎ
지금 시간으로부터 남은시간이었습니다...
다시 알려 주실 수 있을까요?? 아래처럼 적용하면 될까요?
<?php
$d1= new DateTime($list[$i]['datetime']);
$d2= new DateTime(date('Y-m-d H:i', $list[$i]['pt_end']));
$interval = $d1->diff($d2);
echo $interval->days . '일 ' . $interval->h . '시간'. $interval->i . '분 남음'
?>
$d2= new DateTime(date('Y-m-d H:i:s', $list[$i]['pt_end']));
$interval = $d1->diff($d2);
echo $interval->days . '일 ' . $interval->h . '시간;
댓글을 작성하려면 로그인이 필요합니다.
$it_time = new DateTime($list[$i]['it_time']);
$pt_end = new DateTime($list[$i]['pt_end']);
$interval = $it_time ->diff($pt_end);
//표시 할 곳에
echo $interval->format('%d일 %h시간 %i분 %s초');
이렇게 해보세요. 아마 php 버전 5.3 이상부터 될겁니다.
답변에 대한 댓글 4개
3월 16일 23시 59분 59초를 원하시면
$it_time = new DateTime($list[$i]['it_time']); 위에
$list[$i]['pt_end'] = $list[$i]['pt_end']. " 23:59:59";
추가해주세요.
알려주신 대로 적용 해 보니 페이지가 깨지는 현상이 생깁니다. 제가 적용을 잘못 한 거 같은데요.
아래와 같습니다. 어디에 적용하면 되는지 한번 더 알려 주시면 고맙겠습니다.
<th scope="col" class="wh-80">남은시간</th>
<th scope="col" class="wh-90">마감시간</th>
<th scope="col" class="wh-40">참여</th>
<th scope="col" class="wh-80">가격</th>
<th scope="col" class="wh-50">포인트</th>
<th scope="col" class="wh-40">조회</th>
</tr>
</thead>
<tbody>
<?php for ($i=0; $i < count($list); $i++) {
$list[$i]['img'] = apms_it_thumbnail($list[$i], 40, 40, false, true);
// 가격
$it_price = str_replace('원','', display_price(get_price($list[$i]), $list[$i]['it_tel_inq']));
$it_price = ($it_price) ? $it_price : '-';
// 포인트
$it_point = '-';
if($list[$i]['it_point']) {
$it_point = ($list[$i]['it_point_type']) ? $list[$i]['it_point'].'%' : number_format($list[$i]['it_point']);
}
// 현재글 스타일 체크
if ($list[$i]['it_id'] == $it_id) {
$tr_css = ' class="list-now"';
$subject_css = ' now';
$num = "<span class=\"red\">열람중</span>";
} else {
$tr_css = $subject_css = '';
$num = '<span class="en">'.$list[$i]['num'].'</span>';
}
// 분류명
$c1 = $list[$i]['ca_id'];
$c2 = $list[$i]['ca_id2'];
$c3 = $list[$i]['ca_id3'];
if($c1) $ca_arr[] = $ca_name[$c1];
if($c2) $ca_arr[] = $ca_name[$c2];
if($c3) $ca_arr[] = $ca_name[$c3];
$ca_list = implode(' / ', $ca_arr);
unset($ca_arr);
?>
<tr<?php echo $tr_css; ?>>
<td class="text-center font-11">
<?php echo $num;?>
</td>
<td class="text-center">
<a href="<?php echo $list[$i]['href']; ?>">
<?php if($list[$i]['img']['src']) {?>
<img src="<?php echo $list[$i]['img']['src'];?>" alt="<?php echo $list[$i]['img']['alt'];?>">
<?php } else { ?>
<i class="fa fa-camera img-fa"></i>
<?php } ?>
</a>
</td>
<td class="list-subject<?php echo $subject_css;?>">
<a href="<?php echo $list[$i]['href']; ?>">
<?php echo $list[$i]['it_name'];?>
<?php if ($list[$i]['pt_comment']) { ?>
<span class="sound_only">댓글</span><small><?php echo $list[$i]['pt_comment']; ?></small><span class="sound_only">개</span>
<?php } ?>
<?php if($list[$i]['pt_num'] >= (G5_SERVER_TIME - (24 * 3600))) { ?>
<img src="<?php echo $list_skin_url;?>/img/icon_new.gif" alt="">
<?php } ?>
</a>
<div class="text-muted font-11 list-cate">
<?php echo item_icon($list[$i]);?>
<?php echo $ca_list;?>
</div>
<td class="text-center font-11 en">
<?php echo ($list[$i]['it_time']); //작성일자 ?>
</td>
<td class="text-center font-11 en">
<?php echo date("Y년 m월 d일", $list[$i]['pt_end']);//마감일자?>
</td>
다음에 아래 추가
$pt_end = $list[$i]['pt_end']. " 23:59:59";
$it_time = new DateTime($list[$i]['it_time']);
$pt_end = new DateTime($pt_end);
$interval = $it_time ->diff($pt_end);
<td class="text-center font-11 en">
<?php echo date("Y년 m월 d일", $list[$i]['pt_end']);//마감일자?>
</td>
다음에 아마 남은시간 들어갈 <td> </td> 있겠죠? 거기에
<?php echo $interval->format('%d일 %h시간 %i분 %s초'); ?>
처음에 알려 주셨을 때 제가 적용을 해 보았던 형태랑 같은 것 같은데요..그때 깨졌거든요.
아마 제가 잘못 적용한 것 같습니다.
시간 내서 다시 적용해 보겠습니다..바쁘신데 글 남겨 주셔서 감사합니다.
댓글을 작성하려면 로그인이 필요합니다.
단순히 몇초 남았다는 건 mysql datediff 나 timestampdiff 를 이용하면 되지만
사람이 읽을수 있도록 년월일시분초 를 표시하는건 딱 입맞에 맞는건 찾기 힘들죠
직접 만드시거나 아니면 남이 만든걸 적절히 검색해서 써야 됩니다. ㅎㅎ
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
내용 대로 적용해 보았지만 두 시간의 포멧이 달라서 그런지는 몰라도 전혀 다른 결과 값이 나오네요..연구 해 보겠습니다.