我想解析一個RRULE,並顯示重複事件有效的月中幾周。我查看了RFC2445文檔(http://www.ietf.org/rfc/rfc2445.txt),但並不清楚。RRULE解釋使用BYDAY和BYSETPOS
我知道實例的規則:
RRULE FREQ=MONTHLY;INTERVAL=1;BYDAY=TH,FR,WE;BYSETPOS=10,11,12,7,8,9,1,2,3,4,5,6
是對週三,週四,週五在每月的第一,第二,第三和第四周。
或
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的作品將是偉大的。
對不起,我想我還是有點困惑。 因此,2014年7月,TU,Mo的設置爲: 1,2,2,3,3,4,4,5,5 RRULE FREQ = MONTHLY; INTERVAL = 1; BYDAY = TU,MO; BYSETPOS = 1,2,-1,-2 因此-1&-2將抓取5,5,表明TU和MO是該月的第5周。 但我仍然沒有看到它在說: RRULE FREQ = MONTHLY; INTERVAL = 1; BYDAY = TU,MO; BYSETPOS = 1,2,-1,-2 我已經爲第一和第二這個月的最後一個星期,這給了我幾個星期1,2和5,5。 –
編輯我的反應與BYSETPOS = 1,2,-1,-2例如2014年7月 – arnaudq
我可以澄清'BYDAY = MO; BYSETPOS = -1'是否與'BYDAY = -1MO'相同嗎? – u01jmg3