首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >每月29号的RRule

每月29号的RRule
EN

Stack Overflow用户
提问于 2014-02-05 13:40:46
回答 3查看 534关注 0票数 1

我们的团队一直在研究一种表示reucurrences的正确方法,我们偶然发现了RRule https://www.rfc-editor.org/rfc/rfc2445 (在iCalendar rfc中指定)。

我正在尝试编写一条规则,它允许我生成距离每个月的第一天差29天的日期。所以它看起来像这样: jan29,mar1,mar29,apr29。

这里正确的RRule表达式是什么?或者这有可能吗?

EN

回答 3

Stack Overflow用户

发布于 2014-02-05 14:52:38

你应该知道RFC5545超级种子RFC2445。

要绕过闰年的问题,您应该使用RRULEBYYEARDAY,并使用负偏移量。

因此,首先指定一年的第29天,然后指定第60天(31 (对于jan) +29(对于feb 1日之后)),然后从年份的后面开始计算闰年:

  • 知道BYYEARDAY列表中的第31个偏移量是:-1
  • 那么12月29日的偏移量为:-3
  • 类似地,11月29日的偏移量为:-33

从中编写RRULE属性,如下所示:

RRULE:FREQ=YEARLY;BYYEARDAY=29,60,-278,...,-33,-3

票数 1
EN

Stack Overflow用户

发布于 2014-02-12 14:29:39

一种选择是用INTERVAL=29制作你的RRULE。类似于:

RRULE:FREQ=DAILY;INTERVAL=29

并不是所有的iCalendar客户端都支持无限重复集,所以您还应该包含一个UNTILCOUNT组件来满足您的需求。

票数 1
EN

Stack Overflow用户

发布于 2014-02-05 14:01:18

否,RRULE将丢弃无效的日期。所以即使你可以这样做:

代码语言:javascript
复制
RRULE:FREQ=MONTHLY;BYMONTHDAY=29

它只会跳过每年的二月(除了闰年)。

可以为1个事件指定多个RRULE,但很少有日历软件真正支持这一点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21569485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档