You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 5.5中无法使用Carbon的diffForHumans方法?报语法解析错误

解决Laravel 5.5中Carbon diffForHumans语法错误问题

嘿,这个问题我之前碰到过,本质是Laravel版本降级后,Carbon的版本也跟着降到了不支持你之前写法的旧版本,具体来说:

问题根源

Laravel 5.6 配套的 Carbon 版本(1.x 后期或接近2.x的版本)支持直接给 diffForHumans() 传字符串日期作为对比基准,但 Laravel 5.5 绑定的是 Carbon 1.x 早期版本,这个版本的 diffForHumans() 方法不接受字符串作为第二个参数,它期望的是 Carbon 实例或者 null,直接传字符串就会触发语法/类型错误。

修复步骤

把你要对比的日期先转换成 Carbon 实例,再传入方法即可,修改后的代码如下:

use Carbon\Carbon;

public function index(Request $request) {
    // 先把两个日期都解析成Carbon实例
    $targetDate = Carbon::parse('2019-08-03');
    $compareDate = Carbon::parse('2019-08-13');
    
    // 传入Carbon实例调用diffForHumans
    dd($targetDate->diffForHumans($compareDate));
}

额外说明

如果你想确认当前项目的Carbon版本,可以查看项目根目录下的 composer.lock 文件,搜索 nesbot/carbon 就能看到具体版本号。Laravel 5.5 要求的Carbon版本是 ~1.22,这个版本的 diffForHumans() 参数签名是:

public function diffForHumans(Carbon $other = null, $absolute = false, $short = false, $parts = 1)

第一个参数必须是Carbon实例,第二个参数是布尔值(控制是否显示绝对时间而非相对),这和你之前在Laravel 5.6里用的写法完全不同,所以必须做这个调整。

内容的提问来源于stack exchange,提问作者test131

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:09:22