0

次の形式でイベントを保持するデータベースがあります。

スケジュール

id  
show_id
starttime - datetime
endtime - datetime
repeatuntil - datetime
repeat - int
nthdayofmonth - int
repeatmultiple - int

show_id は、保存されているショーの ID 番号を保持します。

ショーは、さまざまな繰り返し、またはさまざまな日/時間のバリエーションに対して複数回保存できます。

starttime、endtime、repeatuntil が何をするかは少し明白です。

repeat は repeat のタイプです:

1 - hourly
2 - daily
3 - weekly
4 - monthly
5 - yearly

nthdayofmonth am not 100% これが必要であるか、使用されるかどうかにかかわらず、repeatmultiple は、イベントを隔週または隔月で繰り返したい場合に使用します...


私が苦労しているのは、次のイベントがいつ発生するかを計算するコードです。インターネットとスタックオーバーフローからさまざまなソリューションを試しましたが、まだ苦労しています。ほとんどの場合、私のコードは無限ループに陥り、次のイベントの正しい日付を計算できません。

次回イベントが発生したときに検索をループできる関数のコーディングを手伝ってくれる人がいる場合は、私が非常にイライラしていて、始めたときからそれほど遠くないので、その支援に大いに感謝します.

4

1 に答える 1

0

ここで本当に必要な 2 つの機能を特徴付けることで、これにアプローチできると思います。

まず、指定 Showされたが実行される次の DateTime を計算するメソッドが必要です。これは他の に関係なく、Show最初に来るものとは何の関係もありません。starttime, endtime, etc条件が与えられたときに、これが次に実行される時間を計算するメソッドが必要ですShow

いずれかがいつ実行されるかを判断できたら、次はどれが実行されるかの判断Show進むことができます。データベースをループして、次の時間を計算し、最も早いものを保存することもできます...または、それぞれの次の DateTime をシリアル化し、データベースに最小のものを照会することもできます。 ShowShow

于 2011-06-13T19:40:14.153 に答える