Laravel 项目使用 Carbon 人性化显示文章发表时间

JellyBool

JellyBool

比如说有这样一个需求:一篇文章的发表时间:

**距离现在时间**      **显示格式**

< 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');

    }

第二:

ArticleModel 中添加下面的方法:

  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 }}; // 视图中直接显示
本文由 JellyBool 创作, 转载和引用遵循 署名-非商业性使用 2.5 中国大陆 进行许可。

共有 13 条评论

wangxiangwei008
修改的评论也不能少于六个字哦!
JellyBool 回复 wangxiangwei008
修改的评论也不能少于六个字哦!
wangxiangwei008 回复 JellyBool
修改的评论也不能少于六个字哦!
JellyBool 回复 wangxiangwei008
修改的评论也不能少于六个字哦!
wangxiangwei008 回复 JellyBool
修改的评论也不能少于六个字哦!
Rayle0801 回复 JellyBool
修改的评论也不能少于六个字哦!
gelove
修改的评论也不能少于六个字哦!
Rayle0801
修改的评论也不能少于六个字哦!
JellyBool 回复 Rayle0801
修改的评论也不能少于六个字哦!
Rayle0801 回复 JellyBool
修改的评论也不能少于六个字哦!
高永立
修改的评论也不能少于六个字哦!
jayin
修改的评论也不能少于六个字哦!
wubuze
修改的评论也不能少于六个字哦!