こんにちは、さるまりんです。
予定を立てるとき、今月の日曜日って何日と何日だっけ?って話になることありませんか。
そんな時のためにPHPの関数を書いてみました。
/**
* 月の特定曜日の日付を一覧にする
* @param $month 月
* @param $year 年
* @param $search 探す曜日 (sun, mon, tue, wed, thu, fri, sat)
* @return 見つかった日付の配列
*/
function listDaysInMonth($month, $year, $search) {
// 結果を格納する配列
$list = [];
// 月初日の文字列
$start = "01-$month-$year";
// 月初日をtime(整数値)で
$start_time = strtotime($start);
// その一月後をtime(整数値)で
$end_time = strtotime("+1 month", $start_time);
// 月初から1日(86,400秒)ずつ繰り返し
for($i=$start_time; $i < $end_time; $i+=86400) {
// 曜日が一致したら
if(strtolower(date('D', $i)) == $search) {
// 結果の配列に格納
$list[] = date('Y-m-d', $i);
}
}
// 結果を返却
return $list;
}
こんな風に呼び出します。
echo '月曜日:' . implode(",", listDaysInMonth(12,2022,'mon')) . "\n";
echo '木曜日:' . implode(",", listDaysInMonth(12,2022,'thu')) . "\n";
結果です。
月曜日:2022-12-05,2022-12-12,2022-12-19,2022-12-26
木曜日:2022-12-01,2022-12-08,2022-12-15,2022-12-22,2022-12-29
今月(2022年12月)の月曜、木曜それぞれの日付が表示されていますね。
あ、肝心の日曜日!
日曜日:2022-12-04,2022-12-11,2022-12-18,2022-12-25
今年はクリスマスが日曜日なんですね。
ちょっとしたことですが、プログラムで書いてみる習慣をつけていこうと思います。
読んでくださってありがとうございました。
それではまた!