DatePeriod在无效月份日期递归

时间:2017-11-29 10:16:12

标签: php date recursion subscription

我使用DatePeriod来获取定期结算系统的递归日期列表。

代码示例:

$time = new DateTime(date('Y-m-d', 1496185200));
$interval = new DateInterval('P1M');
$occ = 3;
$period = new DatePeriod($time, $interval, $occ);

foreach($period as $d)
{
    echo $d->format('d/m/Y H:i').'<br>';
}

输出:

31/05/2017 00:00
01/07/2017 00:00
01/08/2017 00:00
01/09/2017 00:00

如果交易是在5月31日购买的,则DatePeriod方法将迭代到7月1日作为下一个有效日期(6月31日),但是,我需要将正在进行日期的日期返回到8月31日等

所以输出结果为:

31/05/2017 00:00 (June payment)
01/07/2017 00:00 (July payment)
31/07/2017 00:00 (August payment)
31/08/2017 00:00 (September payment)
01/10/2017 00:00 (October payment)
31/10/2017 00:00 (November payment)
01/12/2017 00:00 (December payment)
31/12/2017 00:00 (January payment)

我正在努力计算如何确保付款日期是下一个有效日期。如果日期无效,则无法在预定日期之前付款,类似于直接借记。

1 个答案:

答案 0 :(得分:0)

这不是一个非常优雅的解决方案,但下面提供了正确的输出:

on: { click: function() { test(j) } }