问题描述
因此,我试图根据用户注册日期添加年份,并且需要比较日期,但是它是从注册日期开始更新原始日期。
$registered_at = Carbon::parse('2020-10-17 03:05:03');
$final_date = $registered_at->addYear();
echo $registered_at.'<br>';
echo $final_date;
结果是相同的,我想将registered_at
日期保留到2020-10-17 03:05:03
registered_at : 2021-10-17 03:05:03
final date: 2021-10-17 03:05:03
我期望2020-10-17 03:05:03
registered_at : 2020-10-17 03:05:03
final date: 2021-10-17 03:05:03
解决方法
在Carbon中,当您调用任何方法时,它将更改实例。
在这种情况下,应在调用方法之前使用copy()
方法创建新实例。
例如:
$registered_at = Carbon::parse('2020-10-17 03:05:03');
$final_date = $registered_at->copy()->addYear();
echo $registered_at.'<br>';
echo $final_date;
,
添加addYear()
值:
$registered_at = Carbon::parse('2020-10-17 03:05:03');
$final_date = $registered_at->addYear(1); // added 1 year
echo $registered_at; // 2020-10-17 03:05:03
echo $final_date; // 2021-10-17 03:05:03
,
您需要像这样首先复制实例:
$date_parse = Carbon::parse('2020-10-17 03:05:03');
$registered_at = $date_parse->copy();;
$final_date = $date_parse->addYear();
echo $registered_at.'<br>';
echo $final_date;
,
如果您不希望实例在添加/订阅/设置上发生突变,请使用CarbonImmutable
:
$registered_at = CarbonImmutable::parse('2020-10-17 03:05:03');
$final_date = $registered_at->addYear();
echo $registered_at.'<br>';
echo $final_date;
否则使用->copy()
创建一个新实例。