LoginSignup
43
53

More than 5 years have passed since last update.

Laravel,PHPで日付や時間を操作・取得したいとき

Last updated at Posted at 2015-09-17

PHP,Laravelで日付を操作したいとき、ぱっと出てくるのが、

  • PHPのDateTimeを使う
  • Carbonを使う

だと私的に思っています。

DateTimeを使う適当な例

現在の時刻をDBに保存する場合、

Controller内
Model::insert(array('created_at'=>Carbon::now()));

などのように、Carbon::now();を使用すると
2015-01-01 15:54:54
と、H:i:sまで保存してくれます。

しかし、Y-m-dのみ取得したいと感じることって、結構多いですよね。
(日付から検索するシステムを作るときなど...。)

そのような場合はDateTimeを使うと良いのかな?と思います。

Controller内
リクエストで受け取ったデータを、Y-m-d表記にし、日付で条件検索したい場合
$date = date_create($request->date) //リクエストのdateがH:i:sまで含んでるとする.
$date = date_format($date , 'Y-m-d');
$obj = Model::where('created_at' , 'like' , $date . '%')->get();

Y-m-d表記にViewで表示させたいときなどの場合
$items = Model::all();                        
foreach ($items as $item) {
   $date = date_create($item->date);
   $date = date_format($date , 'Y-m-d');
   $item->date = $date;  //取得したtimestampのデータを、Y-m-dに変換
}

Carbonを使った適当な例

現時刻から、一日後、一か月後などを知りたい場合はCarbonを使って見るのも良いでしょう。

Controller内
   現時刻から一か月後の時間を取得したい場合
   $time = new Carbon(Carbon::now());
   dd($time->addMonth(1));

   現時刻の年だけ取得したい場合
   $time = new Carbon(Carbon::now());
   dd($time->__get('year'));

詳しくはCarbonクラスを見て頂ければ様々な場面で応用できるので使ってみてください。

また、timezoneの設定は、config/app.php の timezoneを変更すれば切り替わります。

app.php
'timezone' => 'Asia/Tokyo',
'locale' => 'ja',
43
53
1

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
43
53