我正在开发一个付款计划程序,它n
根据任意开始日期和一组频率(每天、每周、每月等)中的一个来计划付款,并且正在寻找一种通用算法来这样做。
我尝试了一种蛮力的方法来做到这一点,通过调整频率并根据需要添加一定数量的天、周、月。这适用于大多数目的。
它失败的地方是当任意开始日期在一个月的 28 日之后,并且频率介于每月和每年之间,特别是对于像“每个月的第一天”和“每个月的最后一个”这样的频率。因为并非所有月份都出现第 29、30 和 31 天,所以添加一个月date('2013-10-31')->addMonth(1)
会产生不可预知的结果。就像添加月份一样date('2014-01-31')->addDays(30)
,再次,由于二月不必要地短。
这个问题是否有一个通用的解决方案,没有我需要在任何给定月份移动任何给定频率所需的极其复杂的案例?
PHP 的奖励积分,但如果需要我可以翻译。