Мне нужно получить выход на следующую дату выплаты кредита:
дата кредита: 1 января 2020 г.
срок кредита: 2 года 5 месяцев
дата платежа: ? ?
расчет ожидаемой даты платежа
// calculating next payment date
date("Y-M-D", strtotime(date("2020-1-1")." + 2 years + 2 months"))
Попробуй это,
// 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 :)
$loanPeriod = новый DateInterval("P2Y5M"); как я мог бы динамически передавать данные в DateInterval, например «P $y Y $m M»
DateInterval получает строку, поэтому просто объедините нужные значения в соответствии с форматом. $loanPeriod = new DateInterval("P" . $years . "Y" . $months . "M");
Попробуйте это, ваш код правильный, а формат даты неправильный:
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».
вы можете просто использовать Carbon следующим образом:
Carbon::create(2020, 1, 1)->addYears(2)->addMonths(5)