-3

好的,我想弄清楚如何每 30 天从我的数据库中将 1.5% 添加到总数中。如果我今天的余额是 600 美元并且我在 30 天内没有支付,它会增加 1.5%,但如果我在 60 天内没有支付,它会在前 30 天滞纳金的基础上增加 1.5%。这是我所拥有的...

if ($invoicedate <= "$30_date"){ $late = (1.5 / 100) * $total; }

所以我拉出发票的创建日期,检查它是否是 30 天或更长时间,如果是,则计算正确的“新”总计为 $late。无论多长时间,我如何每 30 天执行一次?我真的必须定义 $60_date、$90_date 等吗?

4

2 回答 2

0

每次在编程中,当您认为需要以某种方式重复变量时,您真正需要做的就是使用循环。

假设 $invoicedate 是一个时间戳,还假设您想按月收费,而不是在 30 天之后:

$lateMonths = 1;
$late = $total;
while ($invoicedate <= strtotime(date('Y-m-d') . ' - '.$lateMonths . 'month')){
    $late = 101.5 * $late;
}
于 2013-11-02T06:34:33.533 回答
0

你能试试这个吗?

 $invoicedate = strtotime("2013/09/01");
 $TodayDate = strtotime('today');

 $timeDiff = abs($TodayDate - $invoicedate);

 $numberDays = $timeDiff/86400;  // 86400 seconds in one day

 $numberDays = intval($numberDays);

 $noOfdaysToCheck ="30";

 $total ="1000";

 if ($numberDays >= $noOfdaysToCheck){$late = (1.5 / 100) * $total; }

每 30 天费用计算:请更新我,这是您预期的吗?

       $invoicedate = strtotime("2013/07/01");
       $TodayDate = strtotime('today');

       $timeDiff = abs($TodayDate - $invoicedate);

       $numberDays = $timeDiff/86400;  // 86400 seconds in one day

       $numberDays = intval($numberDays);

       $noOfdaysToCheck ="30";

       $Fees ="600";

       if ($numberDays >= $noOfdaysToCheck){

              $Interval = $numberDays%$noOfdaysToCheck;

              for($i=1;$i<=$Interval;$i++){
                     $late = (1.5 / 100) * $Fees;
                     $Fees =  FeesCalc($Fees);

               }
        }

       $Fees = number_format($Fees, 2, '.', '');
       echo $Fees;

       function FeesCalc($Fees){
            $late = (1.5 / 100) * $Fees;
            return $TotalFees = $late+$Fees;

       }
于 2013-11-02T06:39:00.370 回答