次のような要件があります (信じてください、私は宿題をするには年を取りすぎています にやにや笑)
さまざまな頻度で実行されるタスクがたくさんあります。また、開始の「シード」日付/時刻もあります。開始シードは過去のある時点で、1 分前、5 年前などです。
開始シード日時と頻度を使用して、タスクの次の実行時間を計算する必要があります。単純に「現在」とタスクの頻度を足すことはできません (MS SQL Server でジョブをスケジュールした場合、これはおなじみのコンセプト)
これを行う愚かな方法は、開始シードを取得し、「現在」よりも大きくなるまで周波数を追加し続けることです。それはほとんど最適ではありません。それを行う単純な方法は、開始シード日を取得し、それを今日の日付に変更して時間をそのままにしてから、現在よりも大きくなるまで頻度を追加することですが、頻度が 24 時間の倍数であることを前提としています。
では、これを行うための最良/最速の方法は何ですか? C# ソリューションのボーナス ポイントですが、これはどの言語でも興味深いパズルを作成するのに十分一般的です :)