몇일 남음? 종료일까지 **일 계산하기 mysql / script 정보
몇일 남음? 종료일까지 **일 계산하기 mysql / script관련링크
본문
안녕하세요.
제목을 어떻게 해야 하는지 몰라 제가 아는 용어로 적었습니다. 그래서 설명이 좀 필요할 것 같습니다.
[상황]
이벤트 게시판 처럼 행사 시작일 / 행사 종료일을 입력 합니다.
wr_8: 행사 시작일 입력함. 입력값 형태(20211219)
wr_9: 행사 종료일 입력함. 입력값 형태는 위와 동일
아래와 같이 나타내고 싶었습니다.
"행사 종료 **일 전"
적용한 사이트:
https://klick.co.kr/bbs/board.php?bo_table=wedding
PHP로 시도 했다가 잘 안되었어 먼저 mysql방식으로 해결 했습니다.(추후 균이님의 조언으로 소스코드가 간결하게 되었습니다)
추가적으로 비타주리님이 스크립트로 소스를 간결하게 짜 주셔서 아래에 추가 했습니다.
도움을 많이 받아 감사의 마음으로 실력도 안되지만 공유하는 마음으로 올립니다.
혹시 잘못된 부분이나 좀더 개선할 수 있는 부분이 있으면 의견 주시면 감사하겠습니다.
[적용한 것]
1. list.skin.php 상단에 아래 코드를 넣어 줬습니다.
//mysql 이용해서 날짜차이 구하기 by 균이님
function my_date_diff($start_date, $end_date) {
$row = sql_fetch("select datediff('$end_date', '$start_date') as dd ");
return $row['dd'];
}
2. list.skin.php 필요한 부분에 아래 코드를 넣어 줬습니다.
{$rest_day} 이 일을 표시하는 부분 입니다.
<?php
$today = date("Ymd");//오늘
$start_day = $list[$i]['wr_8']; // 시작일
$end_day = $list[$i]['wr_9']; // 종료일
$rest_day = my_date_diff($today, $end_day);
if ($today < $start_day) echo "<span style=color:#0000FF>행사 진행 전</span> | 신청가능<span style=color:#ff0000>▼</span>";
else {
if ($today < $end_day) echo "<span style=color:#ff0000>행사 진행 중</span> | 행사 종료 <strong>{$rest_day}</strong>일 전";
else if ($today == $end_day) echo "<span style=color:#ff0000>행사 진행 중</span> | 행사 마지막날";
else echo "<span style=color:#ff0000>행사 종료</span>";
}
?>
추가...
스크립트로 처리 하기 by 비타주리님
적용할 곳에만 아래와 같이 넣어 주면 됩니다.
<?php
$today = date("Ymd"); //오늘
$start_day = $list[$i]['wr_8']; // 시작일
$end_day = $list[$i]['wr_9']; // 종료일
if ($today < $start_day) echo "<span style=color:#0000FF>행사 진행 전</span> | 신청가능<span style=color:#ff0000>▼</span>";
else {
if ($today < $end_day) {
echo "
<script>
currentDay = '$today';
endDay = '$end_day';
currentDay = Number(currentDay.slice(0, 4)) + ',' + Number(currentDay.slice(4, 6)) + ',' + Number(currentDay.slice(-2));
endDay = Number(endDay.slice(0, 4)) + ',' + Number(endDay.slice(4, 6)) + ',' + Number(endDay.slice(-2));
restDay = (new Date(endDay).getTime() - new Date(currentDay).getTime()) / 1000 / 60 / 60 / 24;
document.write('<span style=color:#ff0000>행사 진행 중</span> | 행사 종료 <strong>' + restDay + '</strong>일 전');
</script>
";
}
else if ($today == $end_day) echo "<span style=color:#ff0000>행사 진행 중</span> | 행사 마지막날";
else echo "<span style=color:#ff0000>행사 종료</span>";
}
?>
[마무리]
비 프로래머 초보 입장에서 글을 작성했습니다. 잘못된 정보는 바로 지적해주세요.
그리고 받은 만큼 공유 하고 싶은 마음에서 공개를 했으니 귀엽게 봐주세요.
그리고 끝까지 도움을 주신 비타주님께 감사 드립니다.
좋은 하루 되세요
!-->!-->!-->9
댓글 4개
남은 날짜는 php로 계산해도 되는데 저는 js가 더 편해서 그리 만들었습니다.
<?php
$today = date("Ymd"); //오늘
$start_day = $list[$i]['wr_8']; // 시작일
$end_day = $list[$i]['wr_9']; // 종료일
if ($today < $start_day) echo "<span style=color:#0000FF>행사 진행 전</span> | 신청가능<span style=color:#ff0000>▼</span>";
else {
if ($today < $end_day) {
echo "
<script>
currentDay = '$today';
endDay = '$end_day';
currentDay = Number(currentDay.slice(0, 4)) + ',' + Number(currentDay.slice(4, 6)) + ',' + Number(currentDay.slice(-2));
endDay = Number(endDay.slice(0, 4)) + ',' + Number(endDay.slice(4, 6)) + ',' + Number(endDay.slice(-2));
restDay = (new Date(endDay).getTime() - new Date(currentDay).getTime()) / 1000 / 60 / 60 / 24;
document.write('<span style=color:#ff0000>행사 진행 중</span> | 행사 종료 <strong>' + restDay + '</strong>일 전');
</script>
";
}
else if ($today == $end_day) echo "<span style=color:#ff0000>행사 진행 중</span> | 행사 마지막날";
else echo "<span style=color:#ff0000>행사 종료</span>";
}
?>