laravel显示文章或评论发布的时间距离现在是多久之前

admin2023-01-173443

需求:一篇文章或者评论的发表时间:

**距离现在时间**      **显示格式**
< 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()}}; // 视图中直接显示


网友评论