因此,我从类似2020-05-23
的网址中获取了一个日期,而我试图将其解析为一个碳对象,因此以下遵循代码的方法可以正常工作
$newDate = Carbon::parse('2020-05-23');
dd($newDate);
返回此值:
Carbon\Carbon @1590192000 {#279 ▼
date: 2020-05-23 00:00:00.0 UTC (+00:00)
}
什么是正确的,但是当我尝试获取本月的第一天和最后一天时,它会更改变量?
$newDate = Carbon::parse($date);
//dd($newDate);
dd($newDate, $newDate->firstOfMonth(), $newDate->endOfMonth());
然后返回此
Carbon\Carbon @1590969599 {#279 ▼
date: 2020-05-31 23:59:59.999999 UTC (+00:00)
}
Carbon\Carbon @1590969599 {#279 ▼
date: 2020-05-31 23:59:59.999999 UTC (+00:00)
}
Carbon\Carbon @1590969599 {#279 ▼
date: 2020-05-31 23:59:59.999999 UTC (+00:00)
}
因此它将日期更改为20202-05-31
吗?并且->firstOfMonth()
返回与->endOfMonth
相同的消息Im无法正确解析日期?
同样,当我将Carbon::parse('2020-05-23')
更改为Carbon::now()
时,它也可以正常工作,但日期当然有所不同
日期实例为mutable
,这意味着当您执行类似$newDate->firstOfMonth()
的操作时,它将更改$newDate
您可以在文档https://carbon.nesbot.com/docs/#api-introduction的简介中阅读此内容>
所以当您这样做
dd($newDate, $newDate->firstOfMonth(), $newDate->endOfMonth());
将参数传递给
firstMonth()
之前,它将执行endOfMonth()
,然后执行dd()
,并且由于$newDate
是可变的,所以参数内容将是月底的三倍。
您可以做的是
dd($newDate, $newDate->copy()->firstOfMonth(), $newDate->copy()->endOfMonth());
Carbon::Parse
返回一个可变对象。这意味着这些方法将更改您正在使用的对象,而不是返回新对象并保持原始状态不变。
所以我找到了问题,我不知道为什么会发生?