\Carbon\Carbon 是一个时间转换类,继承了DateTime,diffForHumans是一个比较有用的函数,主要功能是根据当时时间与指定时间的时间差.规格如下:
**距离现在时间** **显示格式**
< 1小时 xx分钟前1小时 - 24小时 xx小时前
1天 - 15天 xx天前
> 15天 直接显示日期
第一步:本地化 Carbon。在 AppServiceProvider
的 boot
方法中添加 Carbon::setLocale('zh')
。
use Carbon\Carbon;
public function boot() {
Carbon::setLocale('zh');
}
繁体中文的设置是 Carbon::setLocale('zh-TW')
,语言配置文件可在 vendor/nesbot/carbon/src/Carbon/Lang
文件夹下找到。
第二步:在 Model 中设定要人性化显示的字段。以 Article Model 的 created_at
字段为例。
use Carbon\Carbon;
public function getCreatedAtAttribute($date) {
if (Carbon::now() > Carbon::parse($date)->addDays(15)) {
return Carbon::parse($date);
}
return Carbon::parse($date)->diffForHumans();//这里的$date是字符串时间形式而不是时间戳
}
下面就可以直接使用了。
$article->created_at; // 1秒前
如果是时间戳形式,可以使用以下形式进行输出:
$news = News::find(1);//这里必须使用Eloquent ORM形式
Carbon::parse($news->created_at->format('Y-m-d H:i:s'))->diffForHumans()//format函数只支持ORM形式的时间类型