Установите день без переполнения (с помощью PHP Carbon)
Я использую Carbon (PHP library), чтобы установить день на дату. Но я хочу, чтобы это происходило не в следующем месяце, а скорее остановилось и в конце месяца. Пример:
Carbon::create(2018, 2, 27, 0, 0, 0)->day(31);
Я получаю
2018-03-03 00: 00: 00
Но мне нужно
2018-02-28 00: 00: 00
Когда вы работаете месяцами, углерод дает вам ->subMonthsNoOverflow()
и - >addMonthsNoOverflow()
что действительно полезно, но нет ничего подобного для установки дня.
У вопроса есть решение - Посмотреть?
Ответы - Установите день без переполнения (с помощью PHP Carbon) / Set day with no overflow (with PHP Carbon)

12.07.2018 03:42:45
Можете ли вы использовать endOfMonth()
вместо этого?
Carbon::create(2018, 2, 27, 0, 0, 0)->endOfMonth();
Полный список модификаторов приведен в документации по углероду.

Нет, а что, если он мне понадобится на 30-й? Мне это нужно в один день, а не в конце месяца.

30 февраля не существует, поэтому
endOfMonth()
даст вам 28 февраля (или 29 февраля в високосный год). В другие месяцы, которые содержат 30 или 31 день, он вернет эту дату, т. е. 31 марта.

А 31-го января я получу вместо 30-го.

Да,
Carbon::create(2018, 1, 27, 0, 0, 0)->endOfMonth();
даст вам 31 января.

Мне нужно установить день на дату. Скажем, Мне нужен 30-й. Для января это будет '- > день (30); ' но для февраля это не удастся.

@Евгений Афанасьев Итак, вы хотели бы иметь возможность установить 30-е число каждого месяца, кроме февраля, который будет 28-м (или 29-м в високосные годы). Это правда?

Нет, я хочу установить день для экземпляра углерода. точно так же, как функция углерода
->day($d)
работает, но если месяц не имеет этого дня, эта функция дает мне еще один месяц, я не хочу этого, я хочу последний день месяца.

20.11.2019 10:26:35
Начиная с Carbon 2.0 они добавили метод addUnitNoOverflow($unit, $value, $overflowUnit)
, но он по-прежнему недокументирован.
Мне удалось получить 2019-02-28, сделав это так
Carbon::parse('2019-02-01')->addUnitNoOverflow('day', 31, 'month')->format('Y-m-d')
Carbon\Carbon @1551398399 {#3013
date: 2019-02-28 23:59:59.999999 UTC (+00:00),
}
Помочь в развитии проекта: