日期差异比较现在时间到日期开始

Date diff compare now time to date started

我有一个简单的计算方法可以计算出储蓄账户的复利。

简单计算

    $p = 300; // Starting amount
    $i = 0.06; // Interest rate
    $c = 12; // compound frequency set to monthly
    $n = 2/12; // Current time invested set to 6 months
    $r = 200; // Monthly investment is 200

    $x = $i / $c;
    $y = pow((1 + $x), ($n * $c));

    if($p!=0)
    {
        $vf = $p * $y + ($r * ($y - 1) / $x);
    }
    else
    {
        $vf = 1 + $y + ($r * ($y - 1) / $x);
    }

    echo $vf;

问题是我需要一个变量来确定帐户的年龄,所以我创建了日期差异代码来比较现在的时间和开设帐户的日期。

日期差异代码

    $join_date = $row->start_date;  // 8th jan 2015
    $date1 = new DateTime('now');  // 9th march 2016
    $date2 = new DateTime($join_date); ?>

    $n = (int)$date1->diff($date2)->format("%m");  // 2 months 

因此,如果我将此代码用于变量 $n,那么答案应该与原始代码相同,但不是。

未经修改的代码给出答案704.00749999999(正确)

修改后的代码给出5424.53898108(错误)

所以问题是有人知道哪里出了问题吗?

在您自己的脚本中,您设置

$n = 2/12;

但修改后的代码集

$n = (int) $date1->diff($date2)->format("%m"); // == 2

很明显,2/12 !== 2,所以也许应该是

$n = ((int) $date1->diff($date2)->format("%m")) / 12;