PHPでカレンダー

PHPでカレンダー

<?php
//現在の「年月」を取得
$now_year = date( 'Y' );
$now_month = date( 'n' );

//1日(月初)のタイムスタンプから「曜日」を取得
$first_day = mktime( 0, 0, 0, $now_month, 1, $now_year );
$first_weekday = date( 'w' , $first_day );
?>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>今月のカレンダー</title>
</head>
<body>
<h3><?php echo $now_year; ?><?php echo $now_month; ?></h3>
<table border="1">
<tr>
<th class="sun"></th>
<th></th>
<th></th>
<th></th>
<th></th>
<th></th>
<th class="sat"></th>
</tr>
<?php
echo '<tr>';  // 最初の<tr>
$weekday = 0; //曜日のカウンタ

//1日の曜日まで空欄必要
while( $weekday != $first_weekday ){
  echo ('<td>&nbsp;</td>');
  $weekday++;
}
for( $day = 1; checkdate( $now_month, $day, $now_year ); $day++ ){
  //土曜まで書いたなら日曜に戻して
  //行を変える
  if( $weekday > 6 ){
    $weekday = 0;
    echo ('</tr>' . "\n");
    echo ('<tr>');
  }

  //文字の色を決める
  switch( $weekday ){
    case 0 : //日曜
      $color = 'red';
      break;
    case 6 : //土曜
      $color = 'blue';
      break;
    default : //月曜~金曜
      $color = 'black';
  }
  //1マス表示
  echo ('<td><font color=' .$color. ">" .$day. '</td>');
  //曜日を進める
  $weekday++;
}
//最後の空欄作成
while( $weekday < 7 ){
  echo ('<td>&nbsp;</td>');
  $weekday++;
}
echo ('</tr>' . "\n");  // 最後の</tr>
?>
</table>
</body>
</html>