【发布时间】:2014-07-24 20:57:43
【问题描述】:
我正在尝试解析 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 是如何工作的也很好。
【问题讨论】: