Проверьте это самостоятельно пояснительная код в PHP:Как начать и или конец года экземпляра Carbon без изменения его в процессе?
Реальность:
$dateTime = Carbon::createFromDateTime(2017, 2, 23);
echo $dateTime; // 2017-02-23 00:00:00
echo $dateTime->startOfYear(); // 2017-12-31 23:59:59
echo $dateTime; // 2017-12-31 23:59:59
Обратите внимание, что на 4-й строке значение $dateTime
является 2017-12-31 23:59:59
. Это потому, что на 3-й линии.
Но почему? Я знаю, что startOfYear Carbon (в) модификатор, но как мы можем таким образом получить хороший старт Дейта года, не изменяя себе
Прогнозный:
$dateTime = Carbon::createFromDateTime(2017, 2, 23);
echo $dateTime; // 2017-02-23 00:00:00
echo $dateTime->startOfYear(); // 2017-12-31 23:59:59
echo $dateTime; // 2017-02-23 00:00:00
Выше, обратите внимание на 4-ю строчку. В действительности, 4-я строка выводит 2017-12-31 23:59:59
.
Вы применяете модификатор к экземпляру углерода. Сначала вам нужно кэшировать его в какой-то другой переменной и сделать это там. Это гарантирует, что ваш оригинал безопасен. Итак '$ modifiedDate = $ dateTime; $ modifiedDate-> startOfYear(); ' –
Это было бы дорого. Для этого потребуется повторное создание одного и того же экземпляра той же даты для каждой операции: возможно, начните год с этой даты, затем получите конец месяца, начало месяца, начало дня, конец дня и т. Д. Не существует любой другой более элегантный способ? – doncadavona
Ницца, проверяя ответы ниже. – doncadavona