Project/자작·수리

블로그 스킨용 D-Day 소스

★の別 2010. 2. 23. 20:34
현재 몇일인지 알려주는 D-Day의 확장판(?) 이다..
첫 실행시에는 바로 다음 기념일이 보이고,
◀Next/Prev▶ 버튼을 눌러서 이전/다음 기념일을 보여준다.
100일 단위와 연단위를 섞어서 차례대로 보여준다.

아울러 생각난김에 대충 짜서 소스가 지저분 하다 ㅡㅡ;




<p align="center"><b><script language="Javascript">
var now = new Date();
var ONE_DAY = (1000 * 60 * 60 * 24);
var then = new Date("Feb 28, 2009");
var gap = Math.floor( (now.getTime() - then.getTime())/ONE_DAY );
document.write("만남" + gap + "일째<br>");
 
var nextanni = gap;
document.write("<a href='javascript:prev_day()'>◀</a><span id='dDay' style='display:inline-block;font-size:11px;font-weight:normal;width:160px'>-</span><a href='javascript:next_day()'>▶</a>");
 
function update()
{
 var next = new Date();
 var hdr = new String();
 next.setTime( then.getTime() + nextanni*(1000*60*60*24) );
 if(nextanni%100)
  hdr = ( next.getFullYear()-then.getFullYear() ) + "년/";
 hdr += nextanni + "일";
 document.getElementById("dDay").innerHTML = ("[" + hdr + "]" + next.getFullYear() + "년 " + (next.getMonth()+1) + "월 " + next.getDate() + "일");
}
 
function next_day()
{
 var nextdaydate = new Date(then);
 nextdaydate.setTime( then.getTime() + (Math.floor(nextanni/100)*100 + 100)*ONE_DAY );
 
 var nextyeardate = new Date(then);
 var curanni = new Date();
 curanni.setTime( then.getTime() + nextanni*ONE_DAY );
 nextyeardate.setFullYear( curanni.getFullYear() );
 if( nextyeardate.getTime() <= curanni.getTime() )
  nextyeardate.setFullYear( curanni.getFullYear() + 1 );
 
 var next = nextdaydate;
 if( nextyeardate.getTime() < nextdaydate.getTime() )
  next =  nextyeardate;
 nextanni = Math.floor( (next.getTime()-then.getTime())/ONE_DAY );
 
 update();
}
 
function prev_day()
{
 var nextdaydate = new Date(then);
 nextdaydate.setTime( then.getTime() + (Math.ceil(nextanni/100)*100 - 100)*ONE_DAY );
 
 var nextyeardate = new Date(then);
 var curanni = new Date();
 curanni.setTime( then.getTime() + nextanni*ONE_DAY );
 nextyeardate.setFullYear( curanni.getFullYear() );
 if( nextyeardate.getTime() >= curanni.getTime() )
  nextyeardate.setFullYear( curanni.getFullYear() -1 );
 
 var next = nextdaydate;
 if( nextyeardate.getTime() > nextdaydate.getTime() )
  next =  nextyeardate;
  nextanni = Math.floor( (next.getTime()-then.getTime())/ONE_DAY );
 
 update();
}
 
next_day();
 
</script></b>
</p>

내 경우는 사이드바 쪽에 적당한 아이템을 만들고 집어넣었다.

ps: 이소스는 시작 당일을 기준으로 D=0 에서 시작한다.