Для этого я использую библиотеку Carbon 2.72.3 и получил следующий код:
Код: Выделить всё
$interval = CarbonInterval::week();
$startDate = Carbon::create(2024, 3, 17);
$endDate = Carbon::create(2024, 4, 1);
$amount = 4;
$period = CarbonPeriod::interval($interval)
->setStartDate($startDate)
->addFilter(fn(Carbon $carbon) => $carbon->isFuture(), 'isFuture')
->addFilter(fn(Carbon $carbon) => !$endDate || $carbon->isBefore($endDate))
->setRecurrences($amount);
dd($period->toArray());
При указанных выше датах Carbon выдает исключение Carbon\Exceptions\UnreachableException с сообщением «Не удалось найти следующую допустимую дату».. Если я уменьшу сумму до 1, это сработает, но вернет в качестве даты только 24 марта 2024 г. (которая тогда ожидается, но не решает мою проблему).
С другими данных, таких как этот, он работает так, как ожидалось: возвращает 4 даты в соответствии с интервалом относительно начальной даты, но только те, которые находятся в будущем.
Код: Выделить всё
$interval = CarbonInterval::month();
$startDate = Carbon::create(2022, 6, 2);
$endDate = null;
$amount = 4;
Код: Выделить всё
$interval = CarbonInterval::year();
$startDate = Carbon::create(2022, 6, 2);
$endDate = Carbon::create(2028, 4, 1);
$amount = 4;
- 2024-06-02
- 2025- 02.06
- 02.06.2026
- 02.06.2027
Подробнее здесь: https://stackoverflow.com/questions/781 ... ut-only-on
Мобильная версия