MENU

【Laravel8】DBからとってきた日時をCarbonを使い整形する

Laravel8講座

システム作っていると日付を扱う機会が多いですよね。

年や月毎によって日数が違ったり、曜日ごとで処理を変えないといけなかったりと、
ややこしくてバグを生みやすい日付関連の処理。

リリース後しばらくしてバグが発覚ってことも少なくはありません。

なるべく、既存ライブラリを使い、自分で変換処理等書きたくないところです。

LaravelではPHP界隈では有名なCarbonの日付用ライブラリが使えるようになっています。
PJ内にインストールされているのでとても簡単、宣言するだけでCarbonのライブラリが使えます。

PHPの標準関数にも日付関連の関数は多いですが、
Carbonの方がよりかゆいところに手が届く感じで良いでしょう。

この記事ではMysqlなどDBからとってきた値をCarbonを使って好みの日付型に変換する方法を説明します。

目次

Carbonとは

PHPのDate Time Classを継承しているライブラリ

本家 https://carbon.nesbot.com/

日付処理にはCarbon

日付処理をする場合は是非Carbonを使うことをお勧めします。
Carbonライブラリ本家のページ ※英語です

Laravel8でのCarbonの使い方を見ていきます
今回はyyyy-mm-dd hh:mm:ss 例)2021-11-21 04:39:55のDBからとってきた値を
2021の年だけ取り出してみます。

では早速みていきましょう。

Controllerで使う

DBの値をControllerでとってきて処理することが多いのでControllerで処理する方法を載せてみます。
index function内でテーブルcreated_atの値をとってきて年だけ取得、表示させるサンプルです。

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Carbon\Carbon;

class IndexController extends Controller
{
    public function index(){
        $tests = DB::table('tests')->get();

        foreach($tests as $test) {
            $created_at = $test->created_at; 
            echo "original: " . $created_at;
            $dt = new Carbon($created_at);
            echo "converted: " . $dt->year . "<br>";
        }
    }
}

7行目でCarbon使います宣言をします。
use Carbon\Carbon;

Carbonの使い方は17〜18行目

こんな感じで扱いたい日付をCarbonクラスの引数に渡してあげればOK 
new Carbon($created_at);
直接 new Carbon($test->created_at); でもOKでしょう。


今回はデバッグのために一旦変数にしています。
オブジェクト変数にセットして、サンプルのような形で年を取り出します。

Viewで使う

UIにあった形で日付変換したい時に便利です。
こんな感じでCarbonのparse関数を使えば変換できます!
Viewでも年だけ取り出してみます。

7行目がCarbonライブラリを使い、年を取り出しているところです。

<table border="1">
        <tr>
            <th>作成年</th>
        </tr>
        @foreach($tests as $recode)
            <tr>
                <th>{{\Carbon\Carbon::parse($recode->created_at)->year}}</th>
            </tr>
        @endforeach
</table>

サンプル

以上です!意外と簡単ですね。さすがCarbon。

今回はDBに入っていた日時を使いましたが、
Copyright等View側でシステムのアクセス時間に合わせた年月日を動的に表示させたいこともあるでしょう。
そういう場合はView側で日付表示する方法についてお読みください。

関連記事

よかったらシェアしてね!

この記事を書いた人

コメント

コメントする

目次
閉じる