以下に示すようなイベントを許可する RRULE の作成に失敗しました。
4 月の第 1 日曜日から 5 月の最終日までの YEARLY を、月曜日、水曜日、金曜日に、永久に繰り返す。
FREQ=YEARLY;BYMONTH=4;BYDAY=SU (4 月の第 1 日曜日が毎年繰り返されます)
と
FREQ=YEARLY;BYMONTH=5;BYMONTHDAY=-1 (5 月の最終日が毎年繰り返されます)
しかし、月曜日、水曜日、金曜日のこれらの日付の間でイベントを毎年繰り返す方法がわかりません。
提案?
更新:コメントには Chris の回答に応答するのに十分なスペースがないため、質問を編集して詳細情報を追加しています。
残念だけど違う。それが私が使用している DDay.iCal ライブラリなのかどうかはわかりませんが、それも機能しません。日付の開始を序数の日付 (最初の日曜日など) にすることはできないことがわかりました..特定の日付にする必要があるため、要件を満たすのが難しくなっています。複数の RRULE を使用しても機能しないようです。
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//DDay.iCal//NONSGML ddaysoftware.com//EN
BEGIN:VEVENT
CREATED:20090717T033307Z
DTSTAMP:20090717T033307Z
DTSTART:20090101T000000
RRULE:FREQ=YEARLY;WKST=SU;BYDAY=MO,WE,FR;BYMONTH=4,5
RRULE:FREQ=YEARLY;WKST=SU;BYDAY=1SU;BYMONTH=4
RRULE:FREQ=YEARLY;WKST=SU;BYMONTH=5;BYMONTHDAY=-1
SEQUENCE:0
UID:352ed9d4-04d0-4f06-a094-fab7165e5c74
END:VEVENT
END:VCALENDAR
見た目は正しそうに見えますが (2009 年 1 月 1 日にイベントを開始する予定でもあります)、特定の日が有効かどうかのテストを開始すると、間違った結果が得られます。
例えば、
4/1/2009 12:00:00 AM = True // Should be False
4/6/2009 12:00:00 AM = True
4/7/2009 12:00:00 AM = False
4/8/2009 12:00:00 AM = True
5/1/2009 12:00:00 AM = True
5/2/2009 12:00:00 AM = False
5/29/2009 12:00:00 AM = True
5/31/2009 12:00:00 AM = True // Should be False
6/1/2009 12:00:00 AM = False
Douglas Day の DDay.iCalソフトウェアを使用していますが、そのライブラリのバグではないと思います。これは iCalendar (RFC 2445) の制限である可能性があると思います。
考え?