我已經創建了一種計算貸款應用程序攤銷計劃的方法。我使用的碳增加了一個月的每個用戶都有時間,使他們的貸款支付的,這裏是我的代碼片段:PHP使用Laravel 5.2和Carbon不能正確添加月份
public function amoritization($amount,$interest_rate,$repaid_months,$start_date)
{
$beginning_balance = $amount;
$interest = $interest_rate/100/12;
$payback = $repaid_months;
$x = pow(1 + $interest,$payback);
$monthly_payment = ($beginning_balance*$x*$interest)/($x-1);
$payment_date = new Carbon($start_date)
$info = (object)[]; //convert empty array to an object
$amoritization = [];
$count = 0;
while($payback > 0){
$total_interest = $interest * $beginning_balance; //interest
$principal_payment = $monthly_payment - $total_interest; //principal
$ending_balance = $beginning_balance - $principal_payment; //ending balance
$info->beginning_balance = (float)$beginning_balance;
$info->total_interest = $total_interest;
$info->payment = $monthly_payment;
$info->principal_payment = $principal_payment;
$info->ending_balance = $ending_balance;
$info->payment_date = $payment_date->addMonths($count++);
array_push($amoritization,$info);
$beginning_balance = $ending_balance;
$info = (object)[];
$payback--;
}
return $amoritization;
}
此方法在我的控制器調用這樣的:
return $this->calculation->amoritization($data['amount'],$data['interest_rate'],$data['loan_term'],$data['start_date']);
這是問題,比如說$ start_date變量存儲了這個值2016-04-14 10:34:56而$ payback變量的值是6.在while循環語句中,我有$ info對象添加payment_date屬性,用於存儲添加的月份:
$info->payment_date = $payment_date->addMonths($count++);
當while循環語句循環一次我應該得到的值是2016-05-14。但是,這是我得到了響應返回:
payment_date :{date: "2016-10-14 10:34:56.247000", timezone_type: 2, timezone: "Z"}
而且,當我做到這一點的循環:
return $info->payment_date;
我回來的價值2016年5月14日。這可能是什麼原因?在此先感謝您的幫助,
我試過這個$ info-> payment_date = $ payment_date-> addMonths(1);,但仍然得到相同的日期,2016-10-14對於每個對象數組中的每個payment_date屬性 – newbieDev