如何在Laravel 9中用diffForHumans生成“今天”“昨天”等日期文本?
自定义Laravel时间显示为“今天/昨天/X天前”格式
你可以通过Carbon的日期判断方法实现需求,以下是两种可行方案:
方案一:直接在Blade中判断
利用Carbon提供的isToday()、isYesterday()和diffInDays()方法,直接在视图里做条件判断:
@if($data->created_at->isToday()) 今天 @elseif($data->created_at->isYesterday()) 昨天 @else {{ $data->created_at->diffInDays(now()) }}天前 @endif
如果想更简洁,也可以用三元表达式:
{{ $data->created_at->isToday() ? '今天' : ($data->created_at->isYesterday() ? '昨天' : $data->created_at->diffInDays(now()).'天前') }}
方案二:封装成模型访问器(推荐复用场景)
如果多个页面需要这种格式,可在对应模型里定义访问器,避免重复代码:
// 在你的数据模型(如Post/Article等)中添加 public function getCreatedAtHumanAttribute() { if ($this->created_at->isToday()) { return '今天'; } elseif ($this->created_at->isYesterday()) { return '昨天'; } else { return $this->created_at->diffInDays(now()) . '天前'; } }
之后在Blade视图里直接调用这个访问器即可:
{{ $data->created_at_human }}
这样处理后,今天创建的内容统一显示“今天”,昨天的显示“昨天”,更早的则显示具体天数前,完全匹配你的需求。
内容的提问来源于stack exchange,提问作者Fawwaz Saputra
相关产品推荐
相关产品推荐

