Laravel/PHP日期差值计算求助:获取账户创建天数遇类型转换报错
解决Carbon对象无法转换为整数的报错,正确计算账户创建至今的天数
你遇到的这个报错是因为不能直接用减号操作两个Carbon对象——PHP会尝试把Carbon实例转换成整数,但Carbon并没有实现这种类型转换,所以抛出了这个错误。而且你的代码里还有个多余的步骤:auth()->user()->created_at本身已经是Carbon对象了,完全没必要转成字符串再用Carbon::parse()重新解析~
正确的实现步骤
要计算账户创建日期到今天的天数差,直接用Carbon提供的diffInDays()方法就可以了,这个方法会直接返回整数类型的天数:
// 获取用户的创建日期(本身就是Carbon实例) $createdAt = auth()->user()->created_at; // 计算到今天的天数差 $daysSinceCreation = $createdAt->diffInDays(Carbon::today()); return $daysSinceCreation;
额外说明
- 如果想要确保返回的是正数(比如极端情况下用户的创建日期被设置为未来日期),可以给
diffInDays()加第二个参数true(表示取绝对值):
$daysSinceCreation = $createdAt->diffInDays(Carbon::today(), true);
- 如果你原本的代码里
$two_days_after是想计算注册两天后的日期(而不是天数差),那应该用addDays()方法:
$twoDaysAfterRegistration = $createdAt->addDays(2); // 如果要转成日期字符串,用toDateString() return $twoDaysAfterRegistration->toDateString();
这样就完全避免了对象转整数的问题,而且代码更简洁高效~
内容的提问来源于stack exchange,提问作者user9653376
相关产品推荐
相关产品推荐

