カレンダの表示
指定された月のカレンダを表示します。月の日数が変化するため、曜日の算定が面倒ですが、ここでは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 | 月(英字) |
