0
1

More than 1 year has passed since last update.

Carbonの「CarbonPeriod」を使ってみたよ。

Posted at

まず初めに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ライフを!!

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1