【发布时间】:2018-01-03 18:07:04
【问题描述】:
我目前正在为 RFC 5545 的解释细节而苦苦挣扎。Section 3.3.10 指出,基本上,所有BYxxx 字段都显示扩展 行为,BYDAY 除外,它具有具体规则,具体取决于BYxxx 字段实际上存在于其上。
但是,我不清楚对于指定 多个 {BYMONTH、BYWEEKNO、BYYEARDAY} 的 RRULE 究竟应该发生什么。在我看来,第 3.3.10 节中的表格允许我必须分别扩展每个规则部分的解释,也就是说,构建由
- 扩展
BYMONTH、BYMONTHDAY等 - 扩展
BYWEEKNO - 扩展
BYYEARDAY
始终尊重解释 BYDAY 行为的注释 2。结果可能有点违反直觉(当然,用户不太可能指定此类规则)。但至少有一种实现是claims to do it this way:
对于
YEARLY频率,BYMONTH、BYWEEKNO和BYYEARDAY规则在指定时彼此分开扩展。
如果存在多个规则部分,其他实现(例如 http://recurrence-expansion-service.appspot.com/ 或 Google 日历)似乎使用限制策略:
- 展开
BYMONTH/BYMONTHDAY - 然后限制使用
BYWEEKNO和BYYEARDAY
有效地创建交叉而不是联合。这种方法似乎与第 3.3.10 节规定的规则部分的应用顺序有些一致:
如果指定了多个
BYxxx规则部分,则在评估后 指定的FREQ和INTERVAL规则部分,BYxxx规则部分 应用于当前的一组评估事件中 以下顺序:BYMONTH、BYWEEKNO、BYYEARDAY、BYMONTHDAY、BYDAY、BYHOUR、BYMINUTE、BYSECOND和BYSETPOS;然后COUNT和UNTIL是 评估。
但是,将其解释为规则部分是 limiting 而不是 expanding 在我看来与 @987654324 上显示的扩展/限制表直接矛盾@。
因此我的问题是:
RFC5545 是否真的明确规定了如何解释BYMONTH、BYWEEKNO 和BYYEARDAY 中的多个同时存在?如果有,在哪里说明?如果标准在这方面实际上并不清楚,是否有“事实上的标准”首选方式来处理这种情况?
【问题讨论】: