Ich habe eine Methode erstellt, um eine Amortisation Zeitplan für Darlehen zu berechnen. Ich Kohlenstoff verwende für jedes Mal einen Monat hinzuzufügen muss der Benutzer zu Zahlungen auf ihre Darlehen zu machen und hier ist Schnipsel meines Code:PHP mit Laravel 5.2 und Carbon keine Monate korrekt hinzufügen
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;
}
Diese Methode in meinem Controller wie folgt aufgerufen wird:
return $this->calculation->amoritization($data['amount'],$data['interest_rate'],$data['loan_term'],$data['start_date']);
Hier ist das Problem, sagen wir zum Beispiel die $ start_date Variable, die diesen Wert gespeichert hat 2016-04-14 10:34:56 und die $ payback Variable hat den Wert 6. In der while Schleifenanweisung habe ich das $ info Objekt hinzugefügt eine Eigenschaft von payment_date, die den hinzugefügten Monat speichert:
$info->payment_date = $payment_date->addMonths($count++);
Wenn die while-Schleife eine Schleife ausführt, dann ist der Wert, den ich erhalten soll, 2016-05-14. Aber das, was ich aus der Antwort bekam:
payment_date :{date: "2016-10-14 10:34:56.247000", timezone_type: 2, timezone: "Z"}
Auch wenn ich dies in der Schleife tun:
return $info->payment_date;
ich den Wert 2016.05.14 zurück. Was könnte die Ursache dafür sein? Vielen Dank im Voraus für Ihre Hilfe,
Ich habe versucht, diesen $ info-> payment_date = $ payment_date-> AddMonths (1) ;, aber immer noch das gleiche Datum erhalten, die von dem Array von Objekten 2016.10.14 für jede payment_date Eigenschaft ist – newbieDev