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

如何修改Carbon日期?需直接编辑$dates变量中的日期(无法修改生成函数)

解决方案

首先你没法直接通过 $dates->open->date = "修改为示例日期" 这种方式修改,因为 date 是 Illuminate\Support\Carbon 类的受保护属性,类外部无法直接赋值修改。不过我们可以利用Carbon提供的公开方法,或者直接替换Carbon实例来实现需求,完全不需要修改生成 $dates 的 FrameCalc 函数。

方法一:用Carbon的内置方法修改日期

Carbon提供了很多便捷的日期修改方法,比如 setDate()、parse() 等,直接操作 $dates->open 这个Carbon实例即可:

// 方法1:指定年、月、日修改
$dates->open->setDate(2024, 5, 20);

// 方法2:直接解析标准日期字符串覆盖原日期
$dates->open->parse('2024-05-20 10:30:00');

方法二:直接替换为新的Carbon实例

如果你需要完全替换掉原来的Carbon对象,也可以直接创建新的Carbon实例赋值给 $dates->open:

use Illuminate\Support\Carbon;

$dates->open = Carbon::create(2024, 5, 20, 10, 30, 0, 'UTC');
// 或者用更简洁的parse方式
$dates->open = Carbon::parse('2024-05-20 10:30:00 UTC');

为什么直接改date属性不行?

从你给出的 dd($dates) 输出能看到,open 对应的Carbon实例里,date 属性前有 - 标记,这代表它是**受保护(protected)**的成员变量,按照PHP的访问规则,类外部不能直接读写这类属性,必须通过类提供的公开方法来操作。

你可以修改后再用 dd($dates) 验证,比如:

$dates = $this->FrameCalc(0);
$dates->open->setDate(2024, 5, 20);
dd($dates);

此时就能看到 open 的日期已经更新为你设置的新值了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:19:31