週の最初か最後かを判別する

広告

実際にカレンダーのように表示するには順に取得したCalendar_Dayクラスのオブジェクトが何曜日なのかを判別できると便利です。都度曜日を取得してもいいのですが、週の初めの曜日か最後の曜日かを判別するメソッドが別途用意されています。このメソッドを使うことで、週の初めの曜日を日曜日に設定した場合でも月曜日に設定した場合でも変更することなく利用することができます。

週の初めの曜日かどうかを判別するには「Calendar_Day」クラスで用意されている「isFirst」メソッドを使います。

戻り値:
  Day オブジェクトが週の最初の日である場合に true

また週の最後の曜日かどうかを判別するには「Calendar_Day」クラスで用意されている「isLast」メソッドを使います。

戻り値:
  Day オブジェクトが週の最後の日である場合に true

どちらのメソッドの場合も対象の「Calendar_Day」クラスのオブジェクトが「Calendar_Month_Weekdays」クラスの「build」メソッドを使って作成されたものである場合にだけ利用できます。

実際には次のように記述します。

$month = new Calendar_Month_Weekdays(2007, 6, 0);
$month -> build();

while ($day = $month -> fetch()){
    if ($day -> isFirst()){
      ....
    }
    
    ....
    
    if ($day -> isLast()){
      ....
    }
}

元になっている「Calendar_Month_Weekdays」クラスのオブジェクトが日曜日から開始していても月曜日から開始していても自動的に判別してくれます。

サンプルプログラム

では簡単なサンプルで実際に試してみます。

sample10-1.php

<html>
<head>
<title>PHP TEST</title>

<style type="text/css">
td{
border:solid 1px #999999;
text-align:right;
padding:5px;
}
</style>

</head>
<body>

<p>表形式で日付を取得</p>

<?php
require_once("Calendar/Month/Weekdays.php");

$month = new Calendar_Month_Weekdays(2007, 5, 0);
$month -> build();

print("<p>2007年5月</p>");
print("<table>");
print("<tr><th>日</th><th>月</th><th>火</th><th>水</th><th>木</th><th>金</th><th>土</th></tr>");
while ($day = $month -> fetch()){
  if ($day -> isFirst()){
    print("<tr>");
    print("<td style=¥"color:#ff0000¥">".$day->thisDay()."</td>");
  }else if ($day -> isLast()){
    print("<td style=¥"color:#0000ff¥">".$day->thisDay()."</td>");
    print("</tr>");
  }else{
    print("<td>".$day->thisDay()."</td>");
  }
}
print("</table>");

?>
</body>
</html>

上記をWWWサーバに設置しブラウザで見てみると下記のように表示されます。

週の最初と最後の判別を行う

( Written by Tatsuo Ikura )