Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>

간단한 php 달력 생성 함수

심심해서 만들어 봤음.
  • 대충돌아는 감
  • 코드좀 정리해야함.
  • next, prev 링크 수정해야함.
  • 좀더 일반화 시킬 수 있는 방법을 생각해 봐야지.

출력결과

코드

    function calendar($year,$mon = 1)
    {
        $mday_list = array('s', 'm', 't' );
        $day_start_unixtime = mktime(0,0,0,$mon,1,$year);
        $day_start = date('N', $day_start_unixtime);

        $cur_mon = $mon;

        $idx = 1;
        $date_N = date('N',$day_start_unixtime);

        echo "<table class=wiki>\n";
        echo "<tr><td colspan=7 align=center><div class=warn2>",date('Y m', $day_start_unixtime),"</div></td></tr>";
        echo "<tr><td>Mo</td><td>Tu</td><td>We</td><td>Th</td><td>Fr</td><td>Sa</td><td>Su</td></tr>";
        $current_unixtime = $day_start_unixtime;
        while(1)
        {
            if((int)$cur_mon != (int)date('m', $current_unixtime)) break;
            $date_N = date('N',$current_unixtime);
            if(($date_N == 1)) echo "<tr>";
            if($idx == 1)
            {
                $date_N = date('N',$current_unixtime);
                $idx += $date_N;
                for($i = 0 ; $i < $date_N-1; $i++)
                {
                    echo "<td>&nbsp;</td>";
                }
            }
            $link_date = date("Y-m-d", $current_unixtime);
            echo "<td><a href=test.com?d=$link_date>",date("d", $current_unixtime),"</a></td>";

            $current_unixtime += 3600 * 24;

            if(($date_N == 7)) echo "</tr>\n";
            $idx ++;
        }
        echo "</table>";
        $prev_cal_link = date("Y-m", $day_start_unixtime - 3600);
        $next_cal_link = date("Y-m", $current_unixtime + (3600*24*2));
        echo "<a href=http://test.com?d=$prev_cal_link>&lt;&lt;</a> Prev &nbsp;&nbsp;&nbsp; Next <a href=http://test.com?d=$next_cal_link>&gt;&gt;</a>";
    }