使用账单付款方式,其账单直接付款,其分期付款期限可能有所不同:30/60/90天,30/45/60,15/30/45等等,我怎样才能准确得到安装日期?获取直接借记账单付款日期的公式
这是我迄今为止,但它不具有例如30/45/60或15/45/75工作:
$dates = [];
$invoiceDate = explode('-', $invoiceDate); // yyyy-mm-dd Generation date
foreach ($installments as $i => $installment) { // e.g.: $installment = [30, 45, 60]
if ($installment % 30 == 0) {
$month = round($installment/30);
$date = mktime(0, 0, 0, $invoiceDate[1] + $month, $invoiceDate[2], $invoiceDate[0]);
}
else {
$month = 0;
if ($installment > 30 && count($installments) > 1) {
$month = floor($installment/30);
$installment = abs($installment - ($month * 30));
}
$monthOffset = 30 - date('t', mktime(0, 0, 0, $invoiceDate[1] + $month, 1, date('Y')));
$date = mktime(0, 0, 0, $invoiceDate[1] + $month, (int)$invoiceDate[2] + (int)$installment - $monthOffset, $invoiceDate[0]);
}
$dates[] = date('Y-m-d', $date);
}
有了这个代码,如果我不得不法案在2016年4月15日,金像30/60/90工作,返回这些付款日期:
15/05/2016 15/06/2016 15/07/2016
然而,不与付款等15/45/75:
30/04/2016 /05/2016(应为30) 30/06/2016
也不与30/45/60:
15/05/2016 /05/2016(应为30) 15/06/2016
如果结算是在2016年4月30日完成的,这种支付工程:30/45/60
30/05/2016 15/06/2016 30/06/2016
所以确实15/45/75:
15/05/2016 15/06/2016 15/07/2016
而且30/60/90:
30/05/2016 30/06/2016 30/07/2016
任何想法如何实现的算法,需要考虑到所有可能性?
我不认为你的例子,甚至工作,因为几个月都没有全部30天呢? –
@JonStirling我正在使用一个月的偏移量来尝试解决它。 – user3514092