2

以下に示すようなイベントを許可する 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) の制限である可能性があると思います。

考え?

4

2 に答える 2

0

BYMONTH ルールを試して、4 月と 5 月のみが必要であることを指定します。

RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=MO,WE,FR;BYMONTH=4,5;WKST=SU

これは、パターンの MWF 部分にない「4 月の最初の日曜日」ビットを処理しません。この特定の日付を dtStart 日付として設定すると、これは最初の発生でカバーされると思います (ただし、もちろん、それ自体が翌年に繰り返されることはありません)。それ以外の場合は、そのために 2 番目の RRULE が必要になる可能性があると思います。

RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=1SU;BYMONTH=4;WKST=SU

それは役に立ちますか?

于 2009-07-16T21:28:17.830 に答える
0

トッド、

上記のように 3 つの RRULE を使用すると、交差ではなく、結果の和集合が生成されます。RFC2445/5545 に非常に適切な方法がないことは正しいです。ただし、イベントの生成中に 4 月の最初の日曜日をプログラムで計算できる場合は、次のように動作するはずです。

DTSTART:20090405T000000
RRULE:FREQ=YEARLY;BYDAY=MO,WE,FR;UNTIL=20090531T000000Z

この方法は、少なくともあなたが達成しようとしていたものに近いようです。

-ダグ

于 2010-04-22T22:02:05.197 に答える