週の日付範囲リストを取得する関数を作りました。
指定した範囲内の週を「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
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;
date(“W”) について
date() に書式引数として「W」を渡すと、週番号を取得できます。
マニュアルには記載されていませんが、週番号が 1 の場合「01」が返ってくるので注意。