<?
/*
▶ 만년달력
$y : 년
$m : 월
$a : 각 달의 날수
$a[$m-1] : 해당 월의 날수
$b : 1년 1월 1일부터 지정한 날짜(년,월)까지의 날수
$w : 지정한 월의 1일 요일값 (0:일,1:월,~,5:금,6:토)
$l : 해당 월의 총 주 (반복 횟수)
$r : 반환값
for()내에서,
$s : 시작일
$e : 종료일
$o : 주별 임시
*/
function calendar($y,$m)
{
$a=array(31,28,31,30,31,30,31,31,30,31,30,31);
if($y%4==0&&$y%100!=0||$y%400==0)$a[1]++;
$b=($y-1)*365+(int)(($y-1)/4)-(int)(($y-1)/100)+(int)(($y-1)/400)+1;
$b+=array_sum(array_slice($a,0,$m-1));
$w=$b%7;$l=ceil(($a[$m-1]+$w)/7);
$r=str_pad(sprintf('%04d년%02d일',$y,$m),20,' ',STR_PAD_BOTH)."\n";
$r.='일 월 화 수 목 금 토'."\n".str_repeat(' ',$w); // 공백3칸
for ($i=$s=1,$e=7-$w;$i<=$l;$i++,$s=$e+1,$e=$i<$l?$s+6:$a[$m-1])
{
for($j=$s,$o='';$j<=$e;$j++)$o.=sprintf('%02d ',$j);
$r.=rtrim($o);if($i<$l)$r.="\n";
}
return $r;
}
echo '<xmp style="font-family:GulimChe;">'.calendar(2011,2).'</xmp>';
?>
calendar(2011,2) 이 부분만 원하는 년도와 월로 바꿔주면 만년 달력으로 사용 가능!!!