첫째 주, 마지막 주에 비는 날짜는 저번 달, 다음 달 날짜로 채워야 하는 PHP 달력 코드 입니다.

 

<div>
    <div>
        <div>
            <div>
                <h4>달력</h4>
                <h3>Program</h3>
            </div>
        </div>
        <div class="calendar">
            <dl>
                <dt class="sun">일</dt>
                <dt>월</dt>
                <dt>화</dt>
                <dt>수</dt>
                <dt>목</dt>
                <dt>금</dt>
                <dt class="sat">토</dt>
            </dl>
            <?
            $year = date('Y');
            $month = date("m");
            //$month = date("m",strtotime('2024-06-01')); 테스트 코드

            $firstDayOfMonth = 1;//첫 날
            $lastDayOfMonth = date("t",strtotime("$year-$month"));//마지막 날

            $firstDayOfWeek = date('w',strtotime("$year-$month-01"));//첫날 요일(0~6)
            $lastDayOfWeek = date('w',strtotime("$year-$month-$lastDayOfMonth"));//마지막 날 요일(0~6)

            $lastDiff = 6-$lastDayOfWeek; //다음 달 날짜 표시 해야 될 수
            $prev_last_day=date('t',strtotime("-1 month",strtotime("$year-$month-01")));//지난달 마지막 날

            $prev_count = $prev_last_day - $firstDayOfWeek+1; //첫째 주 저번 달 날짜 표시
            $totalCnt = $firstDayOfWeek+$lastDayOfMonth+$lastDiff;//첫째 주 표시 해야 할 수 + 이번 달 표시 해야 될 수 + 마지막 주 표시 해야 할 수
            $day=1; // 이번 달 날짜 표시
            $last_cnt = 1; //마지막 주 다음 달 날짜 표시
            for($i=1;$i<=$totalCnt;$i++){
                if($i<=$firstDayOfWeek){
                    if($i==1){
                        echo "<dl class=\"body\">";
                    }
                    echo "<dd class=\"block\"><em>{$prev_count}</em></dd>";
                    $prev_count++;
                }else if($i>$lastDayOfMonth+$firstDayOfWeek){
                    echo "<dd class=\"block\"><em>{$last_cnt}</em></dd>";
                    $last_cnt++;
                    if($i==$totalCnt){
                        echo "</dl>";
                    }
                }
                else{
                    if(date("w", strtotime("$year-$month-$day")) == 0){//주 시작(일요일)
                        echo "<dl class=\"body\">";
                    }
                    echo "<dd><em>{$day}</em></dd>";

                    if(date("w", strtotime("$year-$month-$day")) == 6){// 주 종료(토요일)
                        echo "</dl>";
                    }

                    $day++;
                }
            }
            ?>
        </div>
    </div>
</div>

 

 

'프로그래밍 > PHP' 카테고리의 다른 글

[PHP] 파일 다운로드 오류  (0) 2024.04.03
[PHP] Excel 업로드  (1) 2024.01.13

+ Recent posts