Laravel Carbon (Как рассчитать дату следующего платежа)

Мне нужно получить выход на следующую дату выплаты кредита:

дата кредита: 1 января 2020 г.

срок кредита: 2 года 5 месяцев

дата платежа: ? ?

расчет ожидаемой даты платежа

// calculating next payment date
 date("Y-M-D", strtotime(date("2020-1-1")." + 2 years  + 2 months"))

вы можете просто использовать Carbon следующим образом: Carbon::create(2020, 1, 1)->addYears(2)->addMonths(5)

OMi Shah 21.07.2024 07:34
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
1
54
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Попробуй это,

// Loan start date
$loanStartDate = new DateTime("2020-01-01");

// Loan period: 2 years and 5 months
$loanPeriod = new DateInterval("P2Y5M");

// Add the loan period to the loan start date
$nextPaymentDate = clone $loanStartDate;
$nextPaymentDate->add($loanPeriod);

// Output the next payment date
echo $nextPaymentDate->format("Y-m-d");

ИТ-отдел выведет дату через 2 года и 5 месяцев после 1 января 2020 года. В этом случае будет выведено 01.06.2022.

Компоненты формата DateInterval

P - Начинает период

Компоненты даты

Y – годы (например, 2Y за 2 года)

M – Месяцы (например, 5M за 5 месяцев)

D – дни (например, 10D за 10 дней).

хороший ответ по копипасту ChatGPT :)

OMi Shah 21.07.2024 07:32

$loanPeriod = новый DateInterval("P2Y5M"); как я мог бы динамически передавать данные в DateInterval, например «P $y Y $m M»

software dev 22.07.2024 19:31

DateInterval получает строку, поэтому просто объедините нужные значения в соответствии с форматом. $loanPeriod = new DateInterval("P" . $years . "Y" . $months . "M");

Fabio Rizzaro 22.07.2024 21:48

Попробуйте это, ваш код правильный, а формат даты неправильный:

date("Y-m-d", strtotime(date("2020-1-1")." + 2 years  + 2 months"))

ИЛИ

date("d-m-Y", strtotime(date("2020-1-1")." + 2 years  + 2 months"))

Лучше использовать Carbon Library, поэтому я бы сначала сделал дату экземпляром Carbon.

$date = Carbon::make('1-1-2020');

$paymentDate = $date->addYears(2)->addMonths(5);

Кроме того, если вам нужно определенное форматирование даты, используйте format(); в твоем случае $paymentDate->format('d-m-Y'); поэтому вывод будет выглядеть примерно так: «01-06-2022».

Другие вопросы по теме