今月のカレンダー:一覧
Home >> サンプルスクリプト >> 日付・時刻関連 >> 今月のカレンダー:一覧

今月のカレンダー:一覧

今月のカレンダー(一覧表示)

今月のカレンダーを一覧表示します。表示は「日付(曜日)」のようにします。例:15日(土)

今回のカレンダーは、今月の日付と曜日を一覧で表示したいので

  • 現在の年月日
  • 現在の曜日
  • 今月の日数

を取得する必要があります。これはdate関数で取得できます。現在の年月日を取得して日付と曜日を表示しながら月の日数分ループさせます。

曜日は配列を作成して日本語表示にします。

参考ページ: >> 曜日の日本語表示

土曜日と日曜日・今日の日付を分かりやすくする為に色をつけたいのでスタイルシートの挿入も行います。設定色は以下の通りです。

  • 日曜―文字色:(#CC3300)
  • 土曜―文字色:(#0033CC)
  • 今日―背景色:(silver)

今回使用する関数は、date関数、mktime関数です。echo(printでも可)とarray()も使います。

date関数で使用するフォーマット文字は以下の通りです。

Y 年を4桁で取得
n 月を取得(先頭に0をつけない)
j 日を取得(先頭に0をつけない)
t 指定した月の日数を取得
w 曜日の数値を取得(0:日曜日〜6:土曜日まで)

その他のフォーマット文字は使用しないので紹介しませんが、フォーマット文字列一覧に載せてますので参考にして下さい。

カレンダーサンプルソース

<?php
$now_year
= date("Y"); //現在の年を取得
$now_month = date("n"); //現在の月を取得
$now_day = date("j"); //現在の日を取得
$countdate = date("t"); //今月の日数を取得
$weekday = array("日","月","火","水","木","金","土"); //曜日の配列作成

//見出し部分出力
echo $now_year.'年'.$now_month."月のカレンダー<br>\n";

//一覧表示
for( $day=1; $day <= $countdate; $day++ ){ //今月の日数分ループする

    //各日付の曜日を数値で取得
//曜日用の配列$weekdayとあわせ、$weekday[$w]で日本語の曜日が取得できる
    
$w = date("w", mktime( 0, 0, 0, $now_month, $day, $now_year ) );

//スタイルシートの値設定ここから-------------------------------------------

switch( $w ){
    case
0: //日曜日の文字色
        
$style = "color:#C30;";
        break;
    case
6: //土曜日の文字色
        
$style = "color:#03C;";
        break;
    default:
//月〜金曜日の文字色
        
$style = "color:#333;";
}

if(
$day == $now_day ){
    
$style = $style." background:silver"; //今日の背景色
}
//スタイルシートの値設定ここまで-------------------------------------------

$line = $day."日(".$weekday[$w].")"; //1行の定義:日付(曜日)

//スタイルシートを挿入・1行ごとに改行して出力
echo '<span style="'.$style.'">'.$line."</span><br>\n";
}
?>

出力結果

2008年11月のカレンダー
1日(土)
2日(日)
3日(月)
4日(火)
5日(水)
6日(木)
7日(金)
8日(土)
9日(日)
10日(月)
11日(火)
12日(水)
13日(木)
14日(金)
15日(土)
16日(日)
17日(月)
18日(火)
19日(水)
20日(木)
21日(金)
22日(土)
23日(日)
24日(月)
25日(火)
26日(水)
27日(木)
28日(金)
29日(土)
30日(日)

今回は一覧表示にしましたが、見にくいと思いますので次はテーブルを使ってカレンダーを表示させます。