묻고답하기
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
달력에 법적 공휴일도 빨간색으로 표시 하고 싶어요~
2006.09.19 00:23
아래는 제 홈페이지에 걸려 있는 달력 표시 부분의 소스입니다.
아래 소스를 보시면 아시겠지만, 토요일은 파란색, 일요일은 빨간색으로 표시가 되는데
여기다가 양력 법적 공휴일(설날, 추석 제외)인
신정, 삼일절, 어린이날, 현충일, 제헌절, 광복절, 개천절, 성탄절에 대해서도 빨간색으로 표시하고 싶거든요.
아래에 소스를 첨부할테니 신정부분(양력 1.1)만 지도해주시면 나머지는 제가 알아서 하도록 하겠습니다.
<?
//넘어오는 값이 없을 경우 이번달의 달력을 표시
if(!$y) $y = date("Y");
if(!$m) $m = date("n");
//날짜 체크
if($y < 1970 or $m < 1 or $m > 12) die("정상적인 날짜를 입력해주세요.");
//이전/다음 달 계산
//기본적으로 년도는 올해와 같게, 이전/다음달은 현재 달에서 +1,-1한 값으로 설정
$b_y = $y;
$n_y = $y;
$b_m = $m - 1;
$n_m = $m + 1;
//1월이면 이전달은 12, 이전해는 현재 해 -1
//12월이면 다음달은 1, 다음해는 현재 해 +1로 변경
if($m == 1) {
$b_y = $y - 1;
$b_m = 12;
} elseif($m == 12) {
$n_y = $y + 1;
$n_m = 1;
}
//이번 달 마지막날 구함
$last_day = date("t",mktime(0,0,0,$m,1,$y));
//이번 달 첫 요일/마지막 요일을 숫자로 리턴한 값 구함
$start = date("w",mktime(0,0,0,$m,1,$y));
$end = date("w",mktime(0,0,0,$m,$last_day,$y));
//달력 넘기는 링크, 년/월, 요일 등 날짜 위 부분 표시
$print = "<tr><td><a href='$PHP_SELF?y=$b_y&m=$b_m'>◀</a></td>".
"<td colspan='5' align='center'>${y}년 ${m}월</td>".
"<td><a href='$PHP_SELF?y=$n_y&m=$n_m'>▶</a></td></tr>n".
"<tr><td><font color='red'>일</font></td><td>월</td><td>화</td><td>수</td>".
"<td>목</td><td>금</td><td><font color='blue'>토</font></td></tr>";
//달력 시작 부분 빈칸 표시
//현재 달의 시작 요일이 일요일이 아니면 해당 만큼 colspan을 줌
if($start != 0) $print .= "<tr><td colspan='$start'></td>";
for($i = 1;$i <= $last_day;$i++) {
//1일부터 마지막 날까지 루프를 돌아 해당만큼 <td>를 줌
//일요일이면 <tr>을 넣어줌
$s = mktime(0,0,0,$m,$i,$y);
$t = "";
$p = $i;
//오늘은 <b>로 강조
if($y == date("Y") and $m == date("m") and $i == date("d")) $p = "<b>$p</b>";
//일요일은 빨간색, 토요일은 파란색으로 강조 및 각각 <tr>과 </tr>넣어줌
if(date("w",$s) == 0) {
$p = "<font color='red'>$p</font>";
$print .= "<tr>";
} elseif(date("w",$s) == 6) {
$p = "<font color='blue'>$p</font>";
$t = "</tr>n";
}
$print .= "<td>$p</td>$t";
}
//달력 끝부분 빈칸 표시
//토요일이 아니면 6 - 요일 숫자만큼 빈칸을 줌
if($end != 6) $print .= "<td colspan='".(6 - $end)."'></td></tr>";
echo($print);
?>
아래 소스를 보시면 아시겠지만, 토요일은 파란색, 일요일은 빨간색으로 표시가 되는데
여기다가 양력 법적 공휴일(설날, 추석 제외)인
신정, 삼일절, 어린이날, 현충일, 제헌절, 광복절, 개천절, 성탄절에 대해서도 빨간색으로 표시하고 싶거든요.
아래에 소스를 첨부할테니 신정부분(양력 1.1)만 지도해주시면 나머지는 제가 알아서 하도록 하겠습니다.
<?
//넘어오는 값이 없을 경우 이번달의 달력을 표시
if(!$y) $y = date("Y");
if(!$m) $m = date("n");
//날짜 체크
if($y < 1970 or $m < 1 or $m > 12) die("정상적인 날짜를 입력해주세요.");
//이전/다음 달 계산
//기본적으로 년도는 올해와 같게, 이전/다음달은 현재 달에서 +1,-1한 값으로 설정
$b_y = $y;
$n_y = $y;
$b_m = $m - 1;
$n_m = $m + 1;
//1월이면 이전달은 12, 이전해는 현재 해 -1
//12월이면 다음달은 1, 다음해는 현재 해 +1로 변경
if($m == 1) {
$b_y = $y - 1;
$b_m = 12;
} elseif($m == 12) {
$n_y = $y + 1;
$n_m = 1;
}
//이번 달 마지막날 구함
$last_day = date("t",mktime(0,0,0,$m,1,$y));
//이번 달 첫 요일/마지막 요일을 숫자로 리턴한 값 구함
$start = date("w",mktime(0,0,0,$m,1,$y));
$end = date("w",mktime(0,0,0,$m,$last_day,$y));
//달력 넘기는 링크, 년/월, 요일 등 날짜 위 부분 표시
$print = "<tr><td><a href='$PHP_SELF?y=$b_y&m=$b_m'>◀</a></td>".
"<td colspan='5' align='center'>${y}년 ${m}월</td>".
"<td><a href='$PHP_SELF?y=$n_y&m=$n_m'>▶</a></td></tr>n".
"<tr><td><font color='red'>일</font></td><td>월</td><td>화</td><td>수</td>".
"<td>목</td><td>금</td><td><font color='blue'>토</font></td></tr>";
//달력 시작 부분 빈칸 표시
//현재 달의 시작 요일이 일요일이 아니면 해당 만큼 colspan을 줌
if($start != 0) $print .= "<tr><td colspan='$start'></td>";
for($i = 1;$i <= $last_day;$i++) {
//1일부터 마지막 날까지 루프를 돌아 해당만큼 <td>를 줌
//일요일이면 <tr>을 넣어줌
$s = mktime(0,0,0,$m,$i,$y);
$t = "";
$p = $i;
//오늘은 <b>로 강조
if($y == date("Y") and $m == date("m") and $i == date("d")) $p = "<b>$p</b>";
//일요일은 빨간색, 토요일은 파란색으로 강조 및 각각 <tr>과 </tr>넣어줌
if(date("w",$s) == 0) {
$p = "<font color='red'>$p</font>";
$print .= "<tr>";
} elseif(date("w",$s) == 6) {
$p = "<font color='blue'>$p</font>";
$t = "</tr>n";
}
$print .= "<td>$p</td>$t";
}
//달력 끝부분 빈칸 표시
//토요일이 아니면 6 - 요일 숫자만큼 빈칸을 줌
if($end != 6) $print .= "<td colspan='".(6 - $end)."'></td></tr>";
echo($print);
?>
$공휴일[2]=0717;
$m=data("m");
$d=data("d");
$md=$m.$d;
for($i=0;$i<2;$i++)
{
if($공휴일==$md){$p = "<font color='red'>$p</font>";}
}