kikukawa's diary

都内で活動するシステムエンジニアが書いてます。 興味を持った技術やハマったポイント、自分用メモをつけてます。 最近はweb中心

Pear Calendarを使って年単位のカレンダーを作成する

Pearのカレンダーパッケージを使用して、年単位のカレンダーを作成する


require_once 'Calendar/Year.php';



//土日の色分けをしたいときに指定する

define ('CALENDAR_MONTH_STATE',CALENDAR_USE_MONTH_WEEKDAYS);define

//日曜始まりにしたいときに指定

('CALENDAR_FIRST_DAY_OF_WEEK',0);



$year = new Calendar_Year(date('Y'));

$year->build();



/* @var $month Calendar_Month_Weekdays*/

while ($month = $year->fetch()) {



    $month->build();



    echo "<table>"

    ."<caption align="top">"

    . $month->thisMonth()

    ."</caption>";

    /* @var $day Calendar_Day */

    while ($day = $month->fetch()) {

        // 色の設定

        if ($day->isFirst()) {

            $color = "red";

        } elseif($day->isLast()) {

            $color = "blue";

        } else {

            $color = "black";

        }



        if(!$day->isEmpty()){

            printf("<tr><td style="color:$color">%d月%d日 </td></tr>", $day->thisMonth(), $day->thisDay());

        }

    }

    echo "</table>";

}



Yearで日曜始まりにするには

$year->build(array(),0)

としbuildの第二引数に0を入れてやる


Yearのfetch関数で返してくるオブジェクトはCALENDAR_MONTH_STATEの定数で変えることができる
define ('CALENDAR_MONTH_STATE',CALENDAR_USE_MONTH_WEEKDAYS); // Use Calendar_Month_Weekdays
define ('CALENDAR_MONTH_STATE',CALENDAR_USE_MONTH_WEEKS); // Use Calendar_Month_Weeks
define ('CALENDAR_MONTH_STATE',CALENDAR_USE_MONTH); // Use Calendar_Month