2016-06-10 117 views

回答

1

我同意埃弗特,这是不可能与单个RRULE。

但是,您可以通过组合多个RRULE来实现这一目标。

这样,您就可以将事件分成多个事件具有低于RRULEs的一个个:

如果周三适逢每月的最后一个或第二个最后一天,我们周五将是第一或第二下个月

FREQ=MONTHLY;BYMONTHDAY=1,2;BYDAY=1FR 

在31天的最后一个星期三的最早日期是月25日,因此,下周五将是27-31日的1:

FREQ=MONTHLY;BYMONTH=1,3,5,7,8,10,12;BYMONTHDAY=27,28,29,30,31;BYDAY=FR 

在30天的最后一个星期三的最早日期是月24日,因此,下周五将是26-30日的1:

FREQ=MONTHLY;BYMONTH=4,6,9,11;BYMONTHDAY=26,27,28,29,30;BYDAY=FR 

二月是一个棘手的,因为在非闰年我们想要的星期五将在24日和28日之间,但在闰年是在25日和29日之间。然而,在未来50年之内只有一个闰年,其中2月24日是星期五,这是2040(检查出的FREQ=MONTHLY;BYMONTHDAY=24;BYMONTH=2;BYDAY=FR的结果),所以下面RRULE将是正确的,直到2040:

FREQ=MONTHLY;BYMONTH=2;BYMONTHDAY=24,25,26,27,28,29;BYDAY=FR 

如果你担心闰年,添加EXDATE像下面,你是好未来100年(使这些日期时间值,如果你的开始日期具有时间):

EXDATE;VALUE=DATE:20400224,20680224,20960224,21080224 

如果您确信您的客户支持多个RRULE(已在RFC 5545中被半推弃用,但仍然在中完全有效)你也可以将它们添加到单个事件中,但我不会建议这样做。

相关问题