我正在尝试解析一个RRULE并显示一个月内重复事件有效的几周.我查看了RFC2445 doc(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
Run Code Online (Sandbox Code Playgroud)
是星期三,星期五,星期五,在本月的第1,第2,第3和第4周.
要么
RRULE FREQ=MONTHLY;INTERVAL=1;BYDAY=TU,MO;BYSETPOS=3,4,5,6;
Run Code Online (Sandbox Code Playgroud)
是在本月的第2周和第3周的周一和周二.
要么
RRULE FREQ=MONTHLY;INTERVAL=1;BYDAY=TH,WE;BYSETPOS=-1,-2
Run Code Online (Sandbox Code Playgroud)
是在本月的最后一周的周三和周四.
我通过另一个程序生成了这些,但我不确定它是如何实际生成它们的.
因此,我遇到的问题是了解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一起工作也会很棒.