私は、定期的なイベントを次の形式 (Django モデル) のテーブルに格納するイベント ベースの AJAX アプリケーションに取り組んできました。
event_id = models.CharField(primary_key=True, max_length=24)
# start_date - the start date of the first event in a series
start_date = models.DateTimeField()
# the end date of the last event in a series
end_date = models.DateTimeField()
# Length of the occurence
event_length = models.BigIntegerField(null=True, blank=True, default=0)
rec_type = models.CharField(max_length=32)
rec_type は、次の形式でデータを格納します。
[type]_[count]_[day]_[count2]_[days]#[extra]
type - the type of repeation: 'day','week','month','year'.
count - the interval between events in the “type” units.
day and count2 - define a day of a month ( first Monday, third Friday, etc ).
days - the comma-separated list of affected week days.
extra - the extra info that can be used to change presentation of recurring details.
例えば:
day_3___ - each three days
month _2___ - each two month
month_1_1_2_ - second Monday of each month
week_2___1,5 - Monday and Friday of each second week
これは問題なく動作し、多くのイベントを簡潔に送信できますが、特定の範囲内で発生するすべてのイベントを抽出する必要があります。たとえば、特定の日付、週、または月に、どのようにアプローチするのが最善かについて少し迷っています。
特に、特定の繰り返しパターンを持つイベントが結果に含まれる資格があるかどうかを確認する方法にこだわっています。
ここで最善のアプローチは何ですか?