DateTimeを使った色々な操作をしやすいサンプルが意外にないので作成してみた。
// リクエストで年月(yyyy/mm)を受け取る
//$date = $request->post('date');
$date = '2024/02';
// $dateが空の時は現在の年月(yyyy/mm)を設定
if($date == "") {
$now = new DateTime();
$date = $now->format('Y/m');
}
// カレンダー配列を生成
$tdate = new DateTime($date.'/01');
$week = ["日", "月", "火", "水", "木", "金", "土"];
$date_array = []; // 対象月の日付リスト
do{
$yobi = $week[$tdate->format("w")];
$date_array[] = [
'date' => $tdate->format('Y/m/d')
,'yobi' => $yobi
];
$tdate->modify('+1 day');
}while(intval($tdate->format('d')) !== 1);
// 対象月の日付リストを出力
echo print_r($date_array, true);
リクエストパラメータとして&dateをyyyy/mmの形式で受けとって、月のカレンダーを変更することが可能。
※do-Whileの終了条件は次の月になり日付が1に戻ったかどうかで判断しています。


コメント