我正在尝试解析 RRULE 并显示重复事件在该月的哪些周有效。我查看了 RFC2445 文档(http://www.ietf.org/rfc/rfc2445.txt)并不清楚。
我知道例如规则:
RRULE FREQ=MONTHLY;INTERVAL=1;BYDAY=TH,FR,WE;BYSETPOS=10,11,12,7,8,9,1,2,3,4,5,6
适用于每月第 1、2、3 和 4 周的周三、周四、周五。
或者
RRULE FREQ=MONTHLY;INTERVAL=1;BYDAY=TU,MO;BYSETPOS=3,4,5,6;
适用于每月第 2 周和第 3 周的周一和周二。
或者
RRULE FREQ=MONTHLY;INTERVAL=1;BYDAY=TH,WE;BYSETPOS=-1,-2
适用于本月最后一周的周三和周四。
我通过另一个程序生成了这些,但不确定它实际上是如何生成它们的。
因此,我遇到的问题是了解 BYSETPOS 如何描述一个月的重复发生周数。最终目标是能够解析上述 RRULE 并显示如下:
为了: RRULE FREQ=MONTHLY;INTERVAL=1;BYDAY=TH,FR,WE;BYSETPOS=10,11,12,7,8,9,1,2,3,4,5,6
节目:Thur,Friday,Wed on week:1,2,3,4
为了: RRULE FREQ=MONTHLY;INTERVAL=1;BYDAY=TU,MO;BYSETPOS=3,4,5,6;
节目:Tues, Monday on week:2,3
为了: RRULE FREQ=MONTHLY;INTERVAL=1;BYDAY=TH,WE;BYSETPOS=-1,-2
节目:Whu,Wed on last week
最好的解决方案是objective-c中的字符串,但我可以弄清楚它是否是另一种类似C的语言。即使只是解释 BYSETPOS 和 BYDAY 的工作原理也会很棒。