まず初めにCarbon とは
phpで日付処理を行う時にとっても便利なのがCarbonです。
今日の日付や指定した日付など、支持してあげれば欲しい日にちを持ってきてくれます。
使えるようになるまで(インストール)
composer require nesbot/carbon
//Laravelなら、利用したいファイルでuseしよう
use Carbon\Carbon;
基本的な利用法
$date = new Carbon();
$date = Carbon::now(); // 現在時刻
とまぁ、こんな感じで便利に利用できるのがCarbonさんです。
今回は、Carbonさんを利用して以下のような配列を作ってみようと思います。
現在 2021年12月14日
array:49 [▼
0 => "2019年12月"
1 => "2020年01月"
2 => "2020年02月"
3 => "2020年03月"
4 => "2020年04月"
5 => "2020年05月"
......
44 => "2023年08月"
45 => "2023年09月"
46 => "2023年10月"
47 => "2023年11月"
48 => "2023年12月"
こんな感じで、現在の月から24ヶ月過去と未来(合計48ヶ月分)の配列ですね。
とりあえずコード
$dt_past = Carbon::now()->subMonths(24)->format('Y-m-d');
$dt_future = Carbon::now()->addMonths(24)->format('Y-m-d');
$periods = CarbonPeriod::create($dt_past, "1 month" , $dt_future);
$reversed_period = array_reverse($period->toArray()); //未来から過去にする場合
foreach($periods as $key => $value){
$selects[] = $value->format('Y年m月');
}
過去は「subMonths()」と指定します。引数にはどれぐらい遡りたいかを記載します。
Carbon::now()->subMonths(24)->format('Y-m-d');
未来は「addMonths()」と指定します。引数にはどれぐらい未来かを記載します。
Carbon::now()->addMonths(24)->format('Y-m-d');
CarbonPeriodを利用して、foreach である期間中の反復処理を行います。
第1引数と第3引数で期間を指定 第2引数には取得する幅を指定します。(2 daysなら2日ごとに取得)
$periods = CarbonPeriod::create($dt_past, "1 month" , $dt_future);
CarbonPeriod とは
CarbonPeriod は Carbon のライブラリに含まれている期間を表わすクラスで、これを使うと foreach である期間中の反復処理をするときにとても便利です。PHP 標準にある DatePeriod の Carbon 版です。
おまけ
Carbonは過去から未来に向けて処理を行います。
もし未来から過去の配列を取得したい場合は「array_reverse」を利用しましょ!
$reversed_period = array_reverse($period->toArray()); //未来から過去にする場合
今日はこんな感じで!
良いPHPライフを!!