比如说有这样一个需求:一篇文章的发表时间:
距离现在时间================>显示格式
小于1小时 ===================>xx分钟前
1小时-24小时=================>xx小时前
1天-10天=====================>xx天前
大于10天=====================>直接显示日期
针对这样的需求,可以利用 Carbon 的尝试下面的解决方案:
首先:
在你的app/Providers/AppServiceProvider.php中添 \Carbon\Carbon::setLocale('zh');这一行到boot()方法当中,(为了中文化显示)
public function boot(){
\Carbon\Carbon::setLocale('zh');
}第二:
在Article的 Model 中添加下面的方法:(Laravel 项目已默认安装了此包,所以不需要用 composer 安装它了。
只需要添加命名空间引用就好了:use Carbon\Carbon;)
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 }}; // 视图中直接显示
本帖已被设为精华帖!