我使用谷歌的RFC2445实现( http://code.google。 COM / p /谷歌-RFC-2445 / )复发的规则。如果我在一月月30日定义每月复发开始不到30天(即二月)将完全跳过。因此,谷歌API将返回1月30日,3月30日,4月30日,等也不好。我希望它返回:1月30日,2月28日,3月30日,4月30日

同样,如果我挑月31日的开始日期,然后用少于31天任何月份会被跳过。

这可以是每RFC2445规格正确,或者可以是一个错误。你觉得呢?

我的主要问题是,有没有什么办法来定义规则,称“复发在每个月的30日;或该月的最后一天,如果30日不存在”。我不相信有。任何建议?

预先感谢。

此致 科马克

有帮助吗?

解决方案

答案是:FREQ = MONTHLY; BYMONTHDAY = 28,29,30; BYSETPOS = -1转换为“在每月的30号复发;或该月的最后一天,如果第30不存在”

其他提示

它看起来像你说得对的RFC跳过这些日期。如果您DTSTART是1月31日,并没有指定在你的复发规则BYMONTHDAY(或者,如果BYMONTHDAY是31号),然后它会简单地忽略在几个月该规则不存在这样的日子:

  

如果发现BYxxx规则部分的值   这超出了可用范围   (即,BYMONTHDAY =在2月30日),它们   被简单地忽略。

然而后,你应该能够指定-1 BYMONTHDAY,并用它一个月,不管它可能恰好是最后一天。

  

在BYMONTHDAY规则部分指定一   COMMA字符(ASCII十进制44)   当月的天分隔的列表。   有效值是1到31或-31至-1。   例如,-10表示第十   该月的最后一天。

好了,看着 RFC 2445 本身它肯定看来,你的行为”再看到的是正确的:

  

如果发现BYxxx规则部分的值是其超出可用范围(即,BYMONTHDAY = 30月),它们被简单地忽略。

我能想到的唯一解决方法是使用多次复发的规则,即一为每月的30日,另一个用于最后一天在二月。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top