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

경매 남은 시간 구하기 PHP와 자바스크립트 소스
글쓴이 : 오렌지블루
저작권자 이메일 : yjw1250@kebi.com
작성일 : 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개

댓글을 작성하시려면 로그인이 필요합니다.

프로그램

태그 필터 (최대 3개) 전체 개발자 소스 기타 mysql 팁자료실 javascript php linux flash 정규표현식 jquery node.js mobile 웹서버 os 프로그램 강좌 썸네일 이미지관련 도로명주소 그누보드5 기획자 견적서 계약서 기획서 마케팅 제안서 seo 통계 서식 통계자료 퍼블리셔 html css 반응형 웹접근성 퍼블리싱 표준화 반응형웹 홈페이지기초 부트스트랩 angularjs 포럼 스크린리더 센스리더 개발자톡 개발자팁 퍼블리셔톡 퍼블리셔팁 기획자톡 기획자팁 프로그램강좌 퍼블리싱강좌
+
제목 글쓴이 날짜 조회
14년 전 조회 1,112
14년 전 조회 1,303
14년 전 조회 822
14년 전 조회 908
14년 전 조회 2,133
14년 전 조회 922
14년 전 조회 2,389
14년 전 조회 635
14년 전 조회 3,504
14년 전 조회 725
14년 전 조회 2,080
14년 전 조회 3,466
14년 전 조회 776
14년 전 조회 948
14년 전 조회 1,312
14년 전 조회 810
14년 전 조회 1,325
14년 전 조회 1,244
14년 전 조회 1,358
14년 전 조회 1,101
14년 전 조회 738
14년 전 조회 1,204
14년 전 조회 1,187
14년 전 조회 1,062
14년 전 조회 619
14년 전 조회 598
14년 전 조회 945
14년 전 조회 512
14년 전 조회 3,078
14년 전 조회 590
14년 전 조회 954
14년 전 조회 606
14년 전 조회 633
14년 전 조회 1,866
14년 전 조회 922
14년 전 조회 1,401
14년 전 조회 664
14년 전 조회 1,293
14년 전 조회 1,773
14년 전 조회 819
14년 전 조회 1,330
14년 전 조회 827
14년 전 조회 1,190
14년 전 조회 2,619
14년 전 조회 679
14년 전 조회 4,799
14년 전 조회 690
14년 전 조회 879
14년 전 조회 722
14년 전 조회 3,414
14년 전 조회 522
14년 전 조회 856
14년 전 조회 1,151
14년 전 조회 1,151
14년 전 조회 643
14년 전 조회 1,246
14년 전 조회 724
14년 전 조회 617
14년 전 조회 2,270
14년 전 조회 963
14년 전 조회 594
14년 전 조회 593
14년 전 조회 1,619
14년 전 조회 770
14년 전 조회 1,176
14년 전 조회 1,163
14년 전 조회 1,772
14년 전 조회 1,847
14년 전 조회 1,125
14년 전 조회 788
14년 전 조회 717
14년 전 조회 965
14년 전 조회 1,119
14년 전 조회 2,530
14년 전 조회 591
14년 전 조회 910
14년 전 조회 1,067
14년 전 조회 1,441
14년 전 조회 634
14년 전 조회 543
14년 전 조회 1,256
14년 전 조회 1,601
14년 전 조회 1,671
14년 전 조회 843
14년 전 조회 656
14년 전 조회 1,811
14년 전 조회 879
14년 전 조회 1,256
14년 전 조회 702
14년 전 조회 762
14년 전 조회 752
14년 전 조회 843
14년 전 조회 4,645
14년 전 조회 759
14년 전 조회 876
14년 전 조회 1,531
14년 전 조회 697
14년 전 조회 488
14년 전 조회 869
14년 전 조회 2,140
🐛 버그신고