PR

【Laravel】time型のデータを秒なし(時:分)で表示する方法

アイキャッチ画像

time型のデータは秒まで保存されるため、表示するときは例えば【12:30:00】になります。
秒まで表示する必要がない実装の際time型だと秒が邪魔になってしまいます。

今回は、秒なしで例えば12:30という具合に何時何分だけ表示する方法を解説します。

手順

やり方はシンプルです。

// 秒なしで表示したい変数を$target_timeとすると
{{ substr($target_time, 0, 5) }}

とすれば良いです。

解説

substr()関数は文字列の一部分を返す関数です。

詳しい解説はPHPの公式ドキュメントに載っていますが、少しだけ今回の場合の解説をします。

time型のデータは例えば、データが【12:30:00】だと【12:30】だけで5文字です。
左から順に文字の順番を0, 1, 2, …と定めると、0番目の【1】から5文字表示すれば【12:30】になりますね。

ここで、今回のコードをもう一度見てみましょう。

{{ substr($target_time, 0, 5) }}

substr()の第一引数で変数【$target_time】を指定、第二引数で先頭にする文字の順番【0】を指定、第三引数で文字数【5】を指定しています。

これで無事、

12:30

と表示されるわけです。

この記事を作った背景

time型のデータを秒なしで表示しようとして、

{{ $target_time->format("H:i") }}

としたところ、

Call to a member function format() on string

とエラーが出て、ネットで調べて出てきた「モデルにカラムを追加する方法」を試して、

protected $dates = [
        'arget_time', 
    ];

としたところ、

Unexpected data found. Unexpected data found. Data missing

と、違うエラーが発生して埒が明かなくなりました。

今回のsubstr()を使う方法を思いついて、やってみたら上手くいったので共有しました。

まとめ

秒まで表示する必要がある実装はあまり多くないので、今回紹介した方法を積極的に使っていきましょう!

以上、『【Laravel】time型のデータを秒なし(時:分)で表示する方法』でした。