PHP 週の日付範囲リストを取得する関数を作りました

週の日付範囲リストを取得する関数を作りました。
指定した範囲内の週を「Y/m/d〜Y/m/d」形式のリストで取得できます。

ダウンロードはこちら→ GitHub: hijiriworld/get_week_range_list

get_week_range_list.php を include して使ってください。

関数の説明

書式

get_week_range_list([mixed $args = null]);

パラメーター

キー 説明 初期値
start_sunday 最初の週の日曜日(Y/m/d)
※end_sundayより後の日付
本日を起点とした先週の日曜日
end_sunday 最後の週の日曜日(Y/m/d)
※start_sundayより前の日付
本日を起点としたその年の第1週の日曜日
connect 日付範囲を連結する文字列
reverse true: リストを昇順で返す
false: リストを降順で返す
false

戻り値

週の日付範囲リストの配列

使い方

ディフォルトの使い方

<?php
$weeks_range = get_week_range_list();

// 出力の例
foreach ($weeks_range as $range) {
	echo $range.'<br />';
}
?>

↓(2012/08/23 に実行すると)

2012/08/12〜2012/08/18
2012/08/05〜2012/08/11
2012/07/29〜2012/08/04
2012/07/22〜2012/07/28
2012/07/15〜2012/07/21
2012/07/08〜2012/07/14
2012/07/01〜2012/07/07
2012/06/24〜2012/06/30
2012/06/17〜2012/06/23
2012/06/10〜2012/06/16
2012/06/03〜2012/06/09
2012/05/27〜2012/06/02
2012/05/20〜2012/05/26
2012/05/13〜2012/05/19
2012/05/06〜2012/05/12
2012/04/29〜2012/05/05
2012/04/22〜2012/04/28
2012/04/15〜2012/04/21
2012/04/08〜2012/04/14
2012/04/01〜2012/04/07
2012/03/25〜2012/03/31
2012/03/18〜2012/03/24
2012/03/11〜2012/03/17
2012/03/04〜2012/03/10
2012/02/26〜2012/03/03
2012/02/19〜2012/02/25
2012/02/12〜2012/02/18
2012/02/05〜2012/02/11
2012/01/29〜2012/02/04
2012/01/22〜2012/01/28
2012/01/15〜2012/01/21
2012/01/08〜2012/01/14
2012/01/01〜2012/01/07

オプション指定 – ケーススタディ

1. 本日を起点にした先週の日曜日から、2011/07/24の週までのリスト

$weeks_range = get_week_range_list(array(
	'end_sunday' => '2011/07/24',
));

実行

2. 2012/08/05の週から、2012/05/06の週までのリスト

$weeks_range = get_week_range_list(array(
	'start_sunday' => '2012/08/05',
	'end_sunday' => '2012/05/06',
));

実行

3. 接続文字列を変えて降順で取得

$weeks_range = get_week_range_list(array(
	'start_sunday' => '2012/08/05',
	'end_sunday' => '2012/05/06',
	'connect' => ' - ',
	'reverse' => true,
));

実行

PHP: 日付取得関連の資料

本日を起点にした日付の取得

<?php
// 本日の日付
echo date("Y/m/d");
// 1日前
echo date("Y/m/d",strtotime("-1 day"));
// 1週間前
echo date("Y/m/d",strtotime("-1 week"));
// 1ヶ月前
echo date("Y/m/d",strtotime("-1 month"));
// 1年前
echo date("Y/m/d",strtotime("-1 year"));

// 1日後
echo date("Y/m/d",strtotime("+1 day"));
// 3日前
echo date("Y/m/d",strtotime("-3 day"));

// 次の日曜日
echo date("Y/m/d",strtotime("next Sunday"));
// この前の日曜日
echo date("Y/m/d",strtotime("last Sunday"));
// 先週の日曜日
echo date("Y/m/d",strtotime("2 weeks ago Sunday"));
// 先週の土曜日
echo date("Y/m/d",strtotime("last Saturday"));

※注意したいのは、「この前の日曜日」と「先週の日曜日」は違うということです。
どちらも英訳すると「Last Sunday」になるので混同しがちです。
例えば今日が 8月23日(木) だったとすると、「この前の日曜日」は 8月19日(日)ですが、「先週の日曜日」は 8月12日(日)です。

指定した日付を起点にした日付の取得

// 2012/08/01から7日前
$data = strtotime("2012-08-01");
$result = date("Y/m/d", strtotime("-7 day", $data));
echo $result;

PHP:strtotime – Manual

date(“W”) について

PHP:date – Manual()

date() に書式引数として「W」を渡すと、週番号を取得できます。
マニュアルには記載されていませんが、週番号が 1 の場合「01」が返ってくるので注意。

コメントを残す