Datetime PHP:计算月度/年度账单日期-下月同一天

Datetime PHP:计算月度/年度账单日期-下月同一天,datetime,Datetime,我一直在寻找一种准确计算下一个/未来账单日期的方法,这种方法不会跳过一个月。例如,对于6月31日,我希望下一个计费日期是2月28日(或29日,如果适用)。 我找到了这个。 下面是该代码的更新,以支持未来1个月以上。 希望有帮助 代码: 哈哈,我可以问一下有什么好笑的吗?我投票结束这个问题,因为这个问题应该在里面。@felipsmartins,那么,我应该重新发布这个吗?我只想分享这个解决方案。这真的很有用,谢谢@YarivAzatchi! function calculateBillingDat

我一直在寻找一种准确计算下一个/未来账单日期的方法,这种方法不会跳过一个月。例如,对于6月31日,我希望下一个计费日期是2月28日(或29日,如果适用)。 我找到了这个。 下面是该代码的更新,以支持未来1个月以上。 希望有帮助

代码:


哈哈,我可以问一下有什么好笑的吗?我投票结束这个问题,因为这个问题应该在里面。@felipsmartins,那么,我应该重新发布这个吗?我只想分享这个解决方案。这真的很有用,谢谢@YarivAzatchi!
function calculateBillingDate($startDate, $numberOfCycles = 1) {

    $currentMonth = date('n', $startDate);
    $nextMonth = (($currentMonth + $numberOfCycles) % 12);
    if ($nextMonth === 0) {
        $nextMonth = 12;
    }

    $targetDate = new \DateTime();
    $targetDate->setTimestamp($startDate);

    $targetDate->add(new \DateInterval('P' . $numberOfCycles . 'M'));
    while ((int)$targetDate->format('m') !== $nextMonth) {
        $targetDate->sub(new \DateInterval('P1D'));
    }

    return $targetDate;

}