今月のカレンダー:一覧
そふぃのPHP入門 >> サンプルスクリプト >> 日付・時刻関連 >> 今月のカレンダー:一覧

今月のカレンダー:一覧

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

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

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

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

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

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

参考 曜日の日本語表示

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

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

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

参考関数

  • date() ---- 日付・時刻を書式化する
  • mktime() ---- 指定した日時のUNIXタイムスタンプを取得する

書式

  • string date( string format [, int timestamp ] )

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

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

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

mktime()は目的の日時のタイムスタンプを取得するのに役立つ関数です。

書式

  • int mktime( [ int hour [, int minute [, int second [, int month [, int day [, int year [, int is_dst ]]]]]]] )

引数は時、分、秒、月、日、年の順で指定します。日本語と日時の感覚が違うので注意してください。

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

  1. <?php
  2. $now_year = date("Y"); //現在の年を取得
  3. $now_month = date("n"); //現在の月を取得
  4. $now_day = date("j"); //現在の日を取得
  5. $countdate = date("t"); //今月の日数を取得
  6. $weekday = array("","","","","","",""); //曜日の配列作成
  7.  
  8. //見出し部分出力
  9. echo "<div>".$now_year.''.$now_month."月のカレンダー</div>\n";
  10.  
  11. //一覧表示
  12. for( $day=1; $day <= $countdate; $day++ ){ //今月の日数分ループする
  13.  
  14.     //各日付の曜日を数値で取得
  15.     //曜日用の配列$weekdayを使い、$weekday[$w]で日本語の曜日が取得できる
  16.     $w = date("w", mktime( 0, 0, 0, $now_month, $day, $now_year ) );
  17.  
  18. //スタイルシートの値設定ここから-----------------------------------
  19.  
  20. switch( $w ){
  21.     case 0: //日曜日の文字色
  22.         $style = "color:#C30;";
  23.         break;
  24.     case 6: //土曜日の文字色
  25.         $style = "color:#03C;";
  26.         break;
  27.     default: //月~金曜日の文字色
  28.         $style = "color:#333;";
  29. }
  30.  
  31. if( $day == $now_day ){
  32.     $style = $style." background:silver"; //今日の背景色
  33. }
  34. //スタイルシートの値設定ここまで-----------------------------------
  35.  
  36. $line = $day."日(".$weekday[$w].""; //1行の定義:日付(曜日)
  37.  
  38. //スタイルシートを挿入・1行ごとに改行して出力
  39. echo '<div style="'.$style.'">'.$line."</div>\n";
  40. }
  41. ?>

出力結果

2017年3月のカレンダー
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日(木)
31日(金)

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