カレンダの表示
指定された月のカレンダを表示します。月の日数が変化するため、曜日の算定が面倒ですが、ここではdate()関数を用いて月の初日の曜日を取得します。内部の日付:時刻は1970年1月1日を起点にした秒数に閏年を考慮して計算を行います。
$first_week=date("w",$current); $last_day=date("t",$current); <?php print(date("Y年m月",$current)); ?></h3> <table border="1" width="300"> <tr> <th>日</th><th>月</th><th>火</th> <th>水</th><th>木</th><th>金</th> <th>土</th></tr> <?php for($i=1;$i<=$first_week+$last_day; $i++){ if($i%7==1){print("<tr>");} if($i>$first_week){ print("<td>".($i-$first_week). "</td>"); }else{ print("<td> </td>"); } if($i%7==0){print("</tr>");} } ?> </table>
date()関数
date()関数は、第一引数のもじでさまざまな値を返します。
$timestamp=mktime(0,0,0,date("n")+ $_GET['num'],date("d"),date("Y")); $today_year =date("Y",$timestamp); $today_month=date("n",$timestamp); $current=mktime(0,0,0,$today_month,1, $today_year);
日付の決定
ここでは、今日の月からの相対値で、表示する月を設定します。-10 を指定すると、今日から10月前の月のカレンダを表示します。$_GET['num']
はFormなどから、CGIに渡す日付の相対値です。$currentに表示する日付を記憶します。
d | 日 | n | 月数(1~12) |
D | 英字の曜日 | t | 月の日数 |
h | 時(12時間) | w | 0〜6の曜日 |
H | 時(24時間) | Y | 年 |
m | 月 | M | 月(英字) |