PHPで日付を扱うライブラリ、Carbonですが、
LaravelとLumenにも標準で搭載されています。
Laravel, Lumen上でCarbonを使う際、Carbonの言語が英語に設定されており、
タイムディフ等を使う時は下記のようなフォーマットになり、
日本語のサイトでは使い勝手が悪くなってしまいます。
use \Carbon\Carbon;
// 現在時刻から3時間追加し、現在時刻との比較
echo Carbon::now()->addHours(3)->diffForHumans();
// *output
// 3 hours from now
今回はLaravel、LumenでCarbonの言語フォーマットを日本語にセットする方法を紹介します。
( フレームワークのバージョンは共に5.1です )
Laravelのケース
設定自体はとても簡単で、
app/ProvidersフォルダのAppServiceProvider.phpのbootファンクション内に、
1行のコードを追加するだけです。
// app/Providers/AppServiceProvider.php
public function boot()
{
// Carbonの言語を日本語にセット
\Carbon\Carbon::setLocale('ja');
}
Lumenのケース
Lumenの場合もLaravelと同様ですが、
Lumenの場合はデフォルトではServiceProviderが有効にされていません。
今回は bootstrap/app.php内に記述します。
// bootstrap/app.php
\Carbon\Carbon::setLocale('ja');
動作確認
// app/Http/routes.php
Route::get('/', function () {
echo Carbon\Carbon::now()->addHours(3)->diffForHumans();
});
上記のコードで” 今から 3 時間 ”と表示されていれば完了です。
実際にプロジェクトで使う場合はこの様になると思います。
{{-- sample.blade --}}
<div> {{ $article->created_at->diffForHumans() }} </div>
ブログなどで、更新日など発行日と現在時刻を比較する様なケース使えるので、
機会があれば使って下さい。