私はn
、任意の開始日と一連の頻度 (毎日、毎週、毎月など) の 1 つに基づいて支払いを計画する支払いスケジューラに取り組んでおり、そのための汎用アルゴリズムを探しています。
私は、必要に応じて頻度をケーシングし、特定の日数、週数、月数を追加することによって、これを行うための強引な手段を試みました。これはほとんどの目的で機能します。
失敗するのは、任意の開始日が月の 28 日以降であり、頻度が毎月と毎年の間のどこかである場合です。特に、「毎月の最初」や「毎月の最後」などの頻度の場合です。29 日、30 日、および 31 日はすべての月に表示されるわけではないため、次のような月を追加するとdate('2013-10-31')->addMonth(1)
予測できない結果になります。のような月を追加するのと同様date('2014-01-31')->addDays(30)
に、2 月が不必要に短いためです。
特定の頻度を特定の月に移動するために必要な非常に複雑なケースなしで、この問題に対する一般的な解決策はありますか?
PHPのボーナスポイントですが、必要に応じて翻訳できます.