[PHP]ある曜日に該当する日だけを表示する

Pocket

一年の中で、土日のみ抽出して表示したい時などは 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:




コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です