问题标签 [rrule]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1171 浏览

java - 如何创建 iCalendar Recurrence(RRULE) 事件解析器?

我需要一个 RRULE Parser 方法,我可以在其中提供事件的开始日期、事件的结束日期和该事件的 RRULE 等信息。方法应返回该事件将发生的日期列表。

我尝试使用谷歌库和 ical,但无法创建方法。请帮忙

0 投票
1 回答
392 浏览

icalendar - 当出现 BYMONTH、BYWEEKNO、BYYEARDAY 中的一个以上时的 YEARLY RRULE 解释

我目前正在为 RFC 5545 的解释细节而苦苦挣扎。 第 3.3.10 节指出,基本上,所有BYxxx字段都显示出扩展行为,除了BYDAY,它具有特定规则,具体取决于BYxxx实际存在的字段。

但是,我不清楚对于RRULE指定多个{ BYMONTH, BYWEEKNO, BYYEARDAY} 的情况到底应该发生什么。在我看来,第 3.3.10 节中的表格允许解释我必须分别扩展每个规则部分,即构建三个集合的并集

  1. 扩容BYMONTHBYMONTHDAY_
  2. 扩大BYWEEKNO
  3. 扩大BYYEARDAY

一直尊重解释BYDAY行为的注释 2。结果可能有点违反直觉(当然,用户不太可能指定此类规则)。但是至少有一种实现声称可以这样做

对于YEARLY频率,如果指定BYMONTHBYWEEKNO、 和BYYEARDAY规则将彼此分开扩展。

如果存在多个规则部分,则其他实现(例如http://recurrence-expansion-service.appspot.com/或 Google 日历)似乎使用限制策略:

  1. 展开BYMONTH/BYMONTHDAY
  2. 然后限制使用BYWEEKNOBYYEARDAY

有效地创建交叉而不是联合。该方法似乎与第 3.3.10 节规定的规则部分的应用顺序有些一致:

如果指定了多个BYxxx规则部分,则在评估指定FREQINTERVAL规则部分之后,BYxxx规则部分将按以下顺序应用于当前评估的事件集:BYMONTHBYWEEKNOBYYEARDAYBYMONTHDAYBYDAYBYHOURBYMINUTEBYSECOND; BYSETPOS然后COUNTUNTIL被评估。

但是,将其解释为规则部分是限制而不是扩展在我看来与标准第 44 页上显示的扩展/限制表直接矛盾。

因此,我的问题是:

RFC5545 是否实际上明确指定了多个BYMONTH,BYWEEKNO和的同时存在如何BYYEARDAY被解释?如果是这样,它在哪里说明?而如果标准在这方面实际上并不清楚,是否有“事实上的标准”首选方式来处理这种情况?

0 投票
1 回答
323 浏览

python-dateutil - Python dateutil - 使用 BYMONTHDAY 选择最近日期的错误

我正在使用 python 的 dateutil 模块来解析我日历中的重复规则。以下规则出现问题:

从 dateutil.rrule 导入 rrulestr

这导致以下输出(缺少二月):

这是dateutil模块中的错误,我应该如何修复它?还是我做错了什么?

0 投票
4 回答
4184 浏览

python - 使用python获取两个日期之间的星期数

我想找到最pythonic的方式来输出两个日期之间的周数列表。

例如:

输入

输出

我一直在努力使用 datetime 库但收效甚微

0 投票
2 回答
1189 浏览

icalendar - 周末的 RRULE,包括一个月的第一个星期日

我们每年都会在周末(Fr-Su)举办活动,其中包括 6 月的第一个星期日。我将如何创建一个表达这三天(全天事件)的iCalendar 事件?

为第一个星期日制定规则很容易。但是对于周六和周五,我没有成功创建倒数规则(RFC 5545INTERVALCOUNT必须是正数)。此外,我想不出从周五开始的不同表达方式——可能是最后一个周五五月,也是六月的第一。

0 投票
1 回答
262 浏览

python - 每周规则,持续三周,然后一周不规则,重复

我正在使用来自 python dateutil的rrule并且不知道如何为以下示例创建一个 rruleset:

  • 周一,连续三周。然后一周没有,然后又连续三周,一个没有,依此类推。

关于为此创建 rrule(set) 的任何建议?

0 投票
2 回答
107 浏览

icalendar - 第一次降临的规则

我目前正在尝试设置自己可以订阅的假期 iCalendar,因为我不想依赖 3rd 方服务。

我目前正在尝试VEVENT为圣诞节制作 s。第 2 次、第 3 次和第 4 次降临,以及圣诞节假期是直截了当的,但是我有很大的问题来模拟第一次降临。

具体来说,问题是第一次降临可以在 11 月和 12 月(11 月 27 日到 12 月 3 日)

我怎样才能制作一个重复性事件(或者,更具体地说,是RRULE)来涵盖第一次降临的所有情况?

我试过的


我的第一个想法是这样的:

我们的想法是只选择 11 月 27 日至 12 月 3 日之间的一个星期日。这当然不起作用,因为BYMONTH将搜索扩展到 11 月和 12 月的所有日子,并将BYMONTHDAY搜索限制在两个月中的那些日子。即11月1日,11月2日,... 12月27日,12月28日,...,这当然不是我想要的。


接下来,我尝试使用andBYYEARDAY=331,332,333,334,335,336,337代替,但不幸的是我的 webdav 服务器(Nextcloud,据我所知使用 Sabre。我收到错误消息“无效的 BYYEARDAY 规则”)不支持此功能。BYMONTHDAYBYMONTH


我的下一个想法是使用多个RRULEs —— 至少我在 RFC 中没有看到任何段落说明RRULE最多只允许一个。所以我最终得到:

也没有用。我最后的手段是创建两个单独VEVENT的 s,一个与第一个在RRULE上面,一个与第二个RRULE在上面,但其他方面相同。这有效,但它让我感到困惑。

没有更好的解决方案吗?你会怎么做?

0 投票
1 回答
204 浏览

php - 来自日期时间集合的规则

我正在制作一个经常性活动日历系统,但我遇到了一个问题。我的活动有一组 Period 项目,其中包含 StartedAt Datetime 和 EndedAt Datetime。

许多库允许我将我的 RRule 从字符串转换为类似 Period 的项目,但似乎相反的情况(将多个“DateTime-pairs”转换为 RRule 字符串)根本不常见。

关于这个有什么选择吗?

0 投票
1 回答
132 浏览

javascript - 根据特定时区生成规则

假设我让我的应用程序的用户设置了一个重复事件。他的时区是America/Denver,因此我将其与rrule确定重复发生时间的 一起存储。

假设我的服务器和我的所有用户都在同一个时区,这是可行的。但是,假设我有其他用户,America/Pheonix也许America/New_York谁想要获得用户定义的这个事件的发生。我需要能够使用America/Denver时间创建事件,然后以 UTC 将它们返回给用户。相反,我还需要计算用户America/New_York定义的重复事件并将其作为 UTC 返回给用户。

是否存在一个库,我可以给它一个时区和一个rrule并让它根据该时区的规则(比如尊重 DST)生成重复事件?或者可能是第三方 API?

编辑:这是对我的问题的一些澄清。

假设我有一个重复性事件,每周五上午 9 点发生。如果我将此事件设置在科罗拉多州,则此事件发生的时间将与亚利桑那州的时间略有不同,亚利桑那州一年中的 5 个月没有夏令时。所以在我的数据库中,我需要存储时区,并且我需要一些方法来根据该时区的规则生成事件。这是我坚持的部分,寻找一种基于时区规则生成事件的方法。

0 投票
1 回答
151 浏览

python - 使用 rrule 将日期分配给相关月份

我能够使用 rrule 列出两个日期之间的天数,如下所示:

给出的输出是:

我怎样才能将这些日子分配给他们的相关月份以提供以下输出:

我也很好奇如何扩展它以包括计算中的时间,即。

谢谢 黑曼巴