我一直在试图找出如何组成一个RRULE,它每周都有几天交替发生的事件;例如:
在那里,A周和B周不断交替进入未来。
我得到的最接近的是:
RRULE:FREQ=WEEKLY;COUNT=30;INTERVAL=2;BYDAY=MO,FR这是接近,但给我星期一和星期五在同一周。我如何编码它来选择第二个星期五在两周的间隔?这似乎比使用RRULEs所能做的事情要简单得多,所以我可能忽略了一些显而易见的东西?
发布于 2021-10-12 06:50:54
如果这打算永远持续下去,没有“计数”,那么我认为你能做到的唯一方法就是有两个事件。
使用BY的任何其他的BYSETPOS都会在年底的某个时候遇到麻烦,或者从您定义的角度来看序列的结束。两个事件使一个事件能够干净利落地迭代星期一和星期五。
为每个事件选择DTSTART对于确保您在星期一之后的正确星期五重复使用是至关重要的。你有类似于M fm
BEGIN:VEVENT
DTSTART:20211022T160000Z
DTEND:20211022T170000Z
RRULE:FREQ=WEEKLY;WKST=MO;INTERVAL=2;BYDAY=FR
DTSTAMP:20211012T064353Z
UID:STACKTESTFRIDAY
CREATED:20171102T185254Z
DESCRIPTION:
LAST-MODIFIED:20211012T064141Z
LOCATION:
SEQUENCE:2
STATUS:CONFIRMED
SUMMARY:Afternoon Tea on Friday
TRANSP:OPAQUE
END:VEVENT
BEGIN:VEVENT
DTSTART:20211011T160000Z
DTEND:20211011T180000Z
RRULE:FREQ=WEEKLY;WKST=MO;INTERVAL=2;BYDAY=MO
DTSTAMP:20211012T064353Z
UID:STACKTESTMONDAY
CREATED:20171102T185254Z
DESCRIPTION:
LAST-MODIFIED:20211012T064112Z
LOCATION:
SEQUENCE:2
STATUS:CONFIRMED
SUMMARY:Afternoon Tea on Monday
TRANSP:OPAQUE
END:VEVENT
END:VCALENDAR发布于 2021-10-12 09:06:01
这是另一个可能对你有用的选择。在YEARLY规则中,可以在BYDAY元素前面加上偏移量n,以标识一年中该工作日的第n个实例。
如果您的重复事件从一年中的第20个星期一开始,您可以构建这样的规则来迭代30个不同工作日的实例。
RRULE:FREQ=YEARLY;BYDAY=20MO,21FR,22MO,23FR,24MO,25FR,26MO,27FR,28MO,29FR,30MO,31FR,32MO,33FR,34MO,35FR,36MO,37FR,38MO,39FR,40MO,41FR,42MO,43FR,44MO,45FR,46MO,47FR,48MO,49FR注意,这假设一年从星期六、星期日或星期一开始。
如果一年从星期二、星期三、星期四或星期五开始,则工作日必须有相同的数目(因为在这种情况下,n-星期一和n+1-星期五发生在同一周),即
RRULE:FREQ=YEARLY;BYDAY=20MO,22FR,22MO,24FR,24MO,26FR,26MO,28FR,28MO,30FR,30MO,32FR,32MO,34FR,34MO,36FR,36MO,38FR,38MO,40FR,40MO,42FR,42MO,44FR,44MO,46FR,46MO,48FR,48MO,50FRhttps://stackoverflow.com/questions/69353006
复制相似问题