一年の中で、土日のみ抽出して表示したい時などは DateInterval を一日間隔にセットし、曜日をチェックすれば簡単です。
閏年を考慮した日数分ループさせるか、年が変わったらループを抜けるように設計するのがいいと思います。
こちらのサンプルでは配列として日曜(0)と土曜(6)を指定し、該当する日にちを表示します。
<?php $year = 2038; $target = array(0, 6); // 日曜と土曜 $datetime = new DateTime(); $datetime->setTimezone( new DateTimeZone('Asia/Tokyo') ); $datetime->setDate($year, 1, 1); // 間隔 $interval = new DateInterval('P1D'); // 閏年をチェック $days = $datetime->format('L') == '1' ? 366 : 365; $result = array(); for($i=0;$i<$days;$i++){ if( in_array( (int)$datetime->format('w'), $target) ){ $result[] = clone $datetime; } $datetime->add($interval); } foreach($result as $value){ echo $value->format("Y-m-d l") . "\n"; }
実行結果
2038-01-02 Saturday 2038-01-03 Sunday 2038-01-09 Saturday 2038-01-10 Sunday 2038-01-16 Saturday 2038-01-17 Sunday 2038-01-23 Saturday 2038-01-24 Sunday 2038-01-30 Saturday 2038-01-31 Sunday 2038-02-06 Saturday 2038-02-07 Sunday 2038-02-13 Saturday 2038-02-14 Sunday (以下略)
Similar Posts:
- [PHP]ある曜日の第n週は何日か調べる(国民の祝日)
- [PHP]日付から曜日を割り出す
- [PHP]指定した日時まであと何日(何時間)あるかを調べてカウントダウンする
- [PHP]カレンダーを表示する
- [PHP]次の土日(今週末)の日時を取得する
- [PHP]生年月日(誕生日)から星座を調べる
- [PHP]WordPress用のサイトマップを独自に動的生成
- [PHP]PHPプログラミング学習者が陥りやすい10の失敗