경매 남은 시간 구하기 PHP와 자바스크립트 소스 > 개발자팁

개발자팁

개발과 관련된 유용한 정보를 공유하세요.
질문은 QA에서 해주시기 바랍니다.

경매 남은 시간 구하기 PHP와 자바스크립트 소스 정보

PHP 경매 남은 시간 구하기 PHP와 자바스크립트 소스

본문

경매 남은 시간 구하기 PHP와 자바스크립트 소스
글쓴이 : 오렌지블루
저작권자 이메일 : *** 개인정보보호를 위한 이메일주소 노출방지 ***
작성일 : 2002/04/25 17:33:27
글내용
<필독>경매 남은시간 계산 소스입니다. $StartTime=$Auction[Start_time]; //시작시간을 받아옵니다(종료시간 받아와도 좋습니다.)

switch ( $State ) (경매의 진행상태를 보여주는 값을 받아와서 값대로 뿌려줍니다.그려)
{
case 2: $StateName = '낙찰';
break;
case 3: $StateName = '유찰';
break;
case 1: $StateName = '경매진행중';
}

$StartT = explode(' ',$StartTime); /*1
$StartT2 = explode('-',$StartT[0]); /*2
$StartT1 = explode(':',$StartT[1]); /*3
//이 소스를 이따우로 만든 이유는...
DB에 날짜(시작날짜 오알 종료날짜를 사용자가 지맘대로 넣어서(형식에 맞게 ^^;) -> 0000-00-00 00:00(요따우 형식으로 디폴트를 잡고 형식은 datetime으로 잡아좋슴.)
/*1 => ex) 2001-05-10 11:10 을 공백을 구분자로 두어서 나누어서..StartT라는 변수에 집어 넣심다.
/*2 => ex) 2001-05-10이라는 변수가 Start[0]에 들어왔는데 역시 '-'을 구분자로 두고 Start2에 집어 넣심다.
/*3 => ex) 11:10이라는 변수가 Start[1]에 들어왔는데 또 역시 ':'을 구분자로 두고 Start1에 집어 넣심다.




$TimeRemain = mktime((int)$StartT1[0],((int)$StartT1[1]),((int)$StartT1[2]),(int)$StartT2[1],(int)$StartT2[2],(int)$StartT2[0]);
//여태껏 짤라서 나눠 놓은 날짜변수를 int형으로 각각 바까주고
(왜 이래 하느냐 하면은? 잘 생각해보세요..(아까 사용자가 지맘대로 날짜를 집어넣는다고 했심다.. 그럼..이건 무엇을 뜻하는걸까요?
맞심다..형식은 datatime이라고 받아놨지만..요놈의 php가 문자로 인식합니다 그려..그래서 변환했심다.)
계속이어서.. int형으로 바뀐 날짜변수를 타임스탬프(mktime)의 형식으로 바까줍니다 (9580924 <- 요렇게)

$TimeR = getdate($TimeRemain);
// 위에서 받은 타임스탬프값(TimeRemain)을 getdate라는 함수를 써서 날짜형식으로 재 변환시켜줍니다.

echo" <td width=250 style=color:red; id=showDateId state='$StateName'></td>"
// 요놈은 밑에 스크립터에서 선언한 함수를 불러와서 화면에 뿌려주기 위함입니다. 또한 위에서 선언한 '경매진행상태'를 나타내기도 하구요


/***진짜 중요한 소스***/
<script>
var startDate = new Date($TimeR[year], $TimeR[mon]-1, $TimeR[mday], $TimeR[hours], $TimeR[minutes], $TimeR[seconds] );
//위에서 getdate형식으로 변환한 변수들을 자바스크립터의 Date형식으로 바까줍니다.
var todayDate = new Date();
// 현재 날짜를 받아옵니다.
var noDayDate = new Date(0,1,0,0,0,0);
// 여기는 웃기게도 자바나 php에서는 1970까지의 날짜만 표시한다는 것입니다..그래서 이걸 써 줬심다.
var flag=0;
// 요건 체크하는 변수임다.
var returnValue = '';
// 반환하는 값을 공백으로 바까줍니다.
var hour = '', day, min, sec;
// 요건 밑에서 뿌려줄 변수를 선언하는 겁니다.

todayDate.setTime ( startDate.getTime() - todayDate.getTime() + noDayDate.getTime() );
// 지금뿌려줄 날짜형식을 요놈으로 재정의 하는겁니다.(시작날짜 - 오늘날짜 + 1970년날짜)
/*
그냥 계산 원리...(원래 요런 형식으로 나눕니다.)
s =startDate.getTime() - todayDate.getTime();

if ( s < 0 ) s = -s;

s = s/1000;
var hour = parseInt(s/60/60);
s -= hour*60*60;
var min = parseInt( s/60 );
s -= min*60;
var sec = parseInt( s );
*/

function ShowDate()
{
if ( todayDate.getTime() <= noDayDate.getTime() )
flag = 1;

// 뿌려줄 현재날짜랑 1970년 날짜랑 비교해서 뿌려줄 현재날짜가 1970년 날자랑 같거나 크면
flag라는 변수에 1을 집어넣심다.

if ( !flag )
{
sec = parseInt(todayDate.getTime()-noDayDate.getTime())/1000;
day = parseInt(sec/60/60/24);
sec = (sec-(day*60*60*24));
//이게 진짜 핵심인데요....정말이지 머리싸매고 했심다.
오늘뿌려줄 날짜에서 1970년날짜를 빼고 그 값을 1000으로 나눕니다.
그리고 int형으로 parse시켜줍니다.
다음..day(일자를 뿌려줍니다)라는 함수에 parse받은 sec변수를 /60/60/24(분,초,시간)으로 나누어서 역시 parse시킵니다.
그리고..가장 중요한 다음... sec에서 parse받은 day를 '*60*60*24'로 곱해서 초기화 시켜줍니다.
요게 바로 남은 날짜중 '~일'을 뿌려주는 겁니다..
다른것도 똑 같은 원리로 뿌려주는 겁니다.

hour = parseInt(sec/60/60);
sec = (sec-(hour*60*60));

min = parseInt(sec/60);
sec = parseInt(sec-(min*60));


if ( day )
document.all.showDateId.innerText = day+'일 ';
else
document.all.showDateId.innerText = '';

todayDate.setSeconds( todayDate.getSeconds()-1);

if ( hour )
document.all.showDateId.innerText += hour+'시 ';
if ( min )
document.all.showDateId.innerText += min+'분 ';
if ( sec )
document.all.showDateId.innerText += sec+'초 ';

//요부분은 조금의 테크닉을 준건데요(?) 무조건 날짜를 뿌리는게 아니라 값중에 0이라는 것이 있으면 그 부분은 빼고
보여주는 겁니다.(ex : 10일 5초남았음 이라고)

setTimeout('ShowDate()', 1000);
}
else
{
document.all.showDateId.innerText = document.all.showDateId.state;
}
}
ShowDate();
</script>

//이상 저와 아시는 분의 도움을 받은 경매용 남은 시간 계산 소스였심다.
많이 허접한데여..
혹시 더 좋은 방식이 있다면 고쳐주세요..
글재주가 없어 설명도 허접으로 씁니다..그려..^_^

-------------------------------------------------------------------------
이런 소스가 아무리 찾아봐도 없더라구요..그래서 올립니다.
저도 이런 소스 찾다가 해매다가 다행히 php와 스크립터 도사님에게
전수받아가지고(?) 작성했심다.
추천
2

댓글 2개

전체 5,352
개발자팁 내용 검색

회원로그인

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