laravel显示文章或评论发布的时间距离现在是多久之前
需求:一篇文章或者评论的发表时间:
**距离现在时间** **显示格式** < 1小时 xx分钟前 1小时-24小时 xx小时前 1天-10天 xx天前 >10天 直接显示日期
首先:
在app/Providers/AppServiceProvider.php
中添 \Carbon\Carbon::setLocale('zh');
这一行到boot()
方法当中,(为了中文化显示)
public function boot() { \Carbon\Carbon::setLocale('zh'); }
第二:
在Article
的 Model
中添加下面的方法:(仅仅添加这么一个方法就可以了,不需要在控制器里使用)
public function getCreatedAtAttribute($date) { if (Carbon::now() < Carbon::parse($date)->addDays(10)) { return Carbon::parse($date); } return Carbon::parse($date)->diffForHumans(); }
这里注意到使用到了 Laravel 的 getXXXAttribute()
的特性,如果你是其他的字段,比如published_at
,方法应该写成 getPublishedAtAttribute($date)
,别忘了在Article头部use Carbon\Carbon;
。
最后:
直接显示你的日期就好:
$article = \App\Article::find(7); {{ $article->created_at }}; // 视图中直接显示
如果显示不了:
{{\Carbon\Carbon::parse($article->created_at)->diffForHumans()}}; // 视图中直接显示