Laravel 特定数据的碳变化日期

Laravel Carbon change date to specific data

如何改变f.e。现有日期变量中只有月份和日期(object ?)?

我在数据库中有日期类型字段:

$table->date('start');
$table->date('end');

然后我想在blade视图中根据特殊情况进行更改。

@if (Carbon\Carbon::parse($date->start)->month < Carbon\Carbon::parse($date->end)->month && Carbon\Carbon::now()->month != Carbon\Carbon::parse($date->start)->month)
@php
    $date->start = date('Y-m-d', '05');
@endphp
@endif

以上代码将日期更改为类似 "1970-01-01" 的日期。年份可以保留在当前变量中,但我需要知道如何仅更改当前日期的月份和日期。

例如,如果我检查当前日期月份不等于变量,那么我将日期更改为当前月份。

可能吗?

您可以使用 setter 和 format(继承自 DateTime 的方法):

$date->start = Carbon\Carbon::parse($date->start)->startOfMonth()->setMonth(5)->setDay(13)->format('Y-m-d');

但我会警告模板内部的值发生变化,这听起来像 anti-pattern。更喜欢创建其他变量,如 $formattedDateStart 以保持内容清洁和原始数据未修改。

或者您可以仅在需要显示时调用 ->format() 方法,而不实际将此结果存储在任何地方。

编辑:->startOfMonth() 添加以避免在所选月份的当天不可用时出现问题。