比如说有这样一个需求:一篇文章的发表时间:
**距离现在时间** **显示格式**
< 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
中添加下面的方法:
public function getCreatedAtAttribute($date)
{
// 默认100天前输出完整时间,否则输出人性化的时间
if (Carbon::now() > Carbon::parse($date)->addDays(100)) {
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 }}; // 视图中直接显示
注:本文转自Laravist.com网站
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。