【Laravel】ヘルパーで和暦形式の日付をサクッと表示する

ヘルパークラスを作成

  • app/helpers.php を新規作成
<?php
use Carbon\Carbon;

if (!function_exists('toJapaneseEra')) {
    function toJapaneseEra($date) {
        if (!($date instanceof Carbon)) {
            $date = new Carbon($date);
        }

        $year = $date->year;
        $month = $date->month;
        $day = $date->day;

        if ($year >= 2019 || ($year == 2019 && $month >= 5)) {
            $era = '令和';
            $year -= 2018;
        } elseif ($year >= 1989 || ($year == 1989 && $month >= 1)) {
            $era = '平成';
            $year -= 1988;
        } elseif ($year >= 1926 || ($year == 1926 && $month >= 12)) {
            $era = '昭和';
            $year -= 1925;
        }

        return "{$era}{$year}年{$month}月{$day}日";
    }
}

年や和暦はconfigファイルやテーブルで管理した方がいいかもだけど
ややこしくなるので本記事では直書き

composer.jsonに上記helper.phpのパスを追記

  • composer.json
"autoload": {
    "psr-4": {
        "App\\": "app/",
        "Database\\Factories\\": "database/factories/",
        "Database\\Seeders\\": "database/seeders/"
    },
    // 🌟 追加
    "files": [
        "app/helpers.php"
    ]
},

ファイルをロード

 composer dump-autoload

使用するModelクラスにキャストを追加

  • App/Models/User.php
// Laravel9まで
protected $dates = ['birthday'];

// Laravel10以降
protected $casts = [
  'birthday' => 'datetime'
];

bladeで表示する

{{ toJapaneseEra($user->birthday) }}

\ 案件のご依頼・ご相談はこちらから /