规则错误?列表中仅第一项用于生成事件

时间:2018-07-04 20:01:38

标签: php rrule

我正在尝试使用几个不同的库(WhenRRule)为PHP中的指定RRULE生成事件列表。

RRule specificationalso see this)表示我们可以为大多数属性指定多个用逗号分隔的项目:

(BYSECOND" "=" byseclist )        
( ";" "BYMINUTE" "=" byminlist )        
( ";" "BYHOUR" "=" byhrlist )           
( ";" "BYDAY" "=" bywdaylist )          
( ";" "BYMONTHDAY" "=" bymodaylist )    
( ";" "BYYEARDAY" "=" byyrdaylist )     
( ";" "BYWEEKNO" "=" bywknolist )       
( ";" "BYMONTH" "=" bymolist )          
( ";" "BYSETPOS "=" bysplist )        

请注意,这些值是指值的“列表”,并且该规范似乎表明所有值都可以用逗号分隔。例如,BYMONTH = 1,2,3表示一月,二月和三月。

但是,当我尝试生成这样的RRULE时:

FREQ=YEARLY;INTERVAL=1;BYDAY=SU,MO,TU;BYSETPOS=1;BYMONTH=2,3

我希望每年的2月和3月的星期日,星期一和星期二都会发生该事件。

但是,这些库仅返回与列表中第一天/月匹配的单个匹配项。因此,如果我们将开始日期指定为2018年2月4日,并在以后的几年中生成事件,则只会得到2018年2月4日,2019年2月3日,2020年2月2日等。星期一或星期二或三月的任何日期。

有人可以阐明这是错误还是实际预期的行为?

谢谢!

1 个答案:

答案 0 :(得分:2)

  

有人可以阐明这是错误还是实际预期的行为?

我是php-rrule的作者,非常感谢您使用我的lib!我可以很容易地了解一下:您有BYSETPOS=1,它明确地将结果集限制为列表的第一个出现。是的,这是预期的行为。如果需要所有内容,为什么还要添加BYSETPOS