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

时间:2016-03-09 19:46:44

标签: php calculator datediff

我有一个简单的计算,可以计算出储蓄账户的复合利率。

简单计算

    $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 (错误)

所以问题是任何人都知道什么是错的?

1 个答案:

答案 0 :(得分:2)

在您自己的脚本中,设置

$n = 2/12;

但修改后的代码集

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

显然,2/12 !== 2,也许应该是

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