プログラム関係の備忘録。技術系記事1000記事以上を目指すブログ

【Laravel5.6】Carbonで指定の時間を足して結果を取得する

  • 2018年5月22日
  • 2018年5月22日
  • PHP
  • 103view
  • 0件
PHP

はじめに

時間と時間を足す計算がcarbonを使うと2行で済んで楽だったという話。

タイトルが分かりにくいので具体的に今回したいこと。

フォームから以下を入力
・日付(yyyy/MM/dd)
・開始時間(HH:mm)
・所要時間(分)

・DBには開始日時と終了日時がyyyy/MM/dd HH:mm:ssの形でインサート。

当初は開始時間と終了時間を入力する仕様だったが、所要時間を入力するほうが何かと都合がよくなったため。

timestampに変換して計算して分を時間にして・・・ちょっと面倒。
carbonでもっと簡単に出来る方法がありました。

やりかた

// コントローラーでcarbonを読み込む
use Carbon\Carbon;

// ~~
// ~~中略
// ~~

// まずはフォームの日付と開始時間をくっつけて開始時間を出す。
$startDateTime = $request->date. ' '. $request->time;
// インスタンスを作成し、フォームの所要時間を加算する
$endDateTime = new carbon($startDateTime);
$endDateTime->addMinutes($request->time);
addMinute()に引数を加えても1分しか加算されない。
引数を指定する場合はaddMinutes()にする。

addHour()やaddMonthも同様。
詳しくは公式に。
https://carbon.nesbot.com/docs/#api-addsub