问题标签 [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.
java - 如何创建 iCalendar Recurrence(RRULE) 事件解析器?
我需要一个 RRULE Parser 方法,我可以在其中提供事件的开始日期、事件的结束日期和该事件的 RRULE 等信息。方法应返回该事件将发生的日期列表。
我尝试使用谷歌库和 ical,但无法创建方法。请帮忙
icalendar - 当出现 BYMONTH、BYWEEKNO、BYYEARDAY 中的一个以上时的 YEARLY RRULE 解释
我目前正在为 RFC 5545 的解释细节而苦苦挣扎。 第 3.3.10 节指出,基本上,所有BYxxx
字段都显示出扩展行为,除了BYDAY
,它具有特定规则,具体取决于BYxxx
实际存在的字段。
但是,我不清楚对于RRULE
指定多个{ BYMONTH
, BYWEEKNO
, BYYEARDAY
} 的情况到底应该发生什么。在我看来,第 3.3.10 节中的表格允许解释我必须分别扩展每个规则部分,即构建三个集合的并集
- 扩容
BYMONTH
等BYMONTHDAY
_ - 扩大
BYWEEKNO
- 扩大
BYYEARDAY
一直尊重解释BYDAY
行为的注释 2。结果可能有点违反直觉(当然,用户不太可能指定此类规则)。但是至少有一种实现声称可以这样做:
对于
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
被评估。
但是,将其解释为规则部分是限制而不是扩展在我看来与标准第 44 页上显示的扩展/限制表直接矛盾。
因此,我的问题是:
RFC5545 是否实际上明确指定了多个BYMONTH
,BYWEEKNO
和的同时存在如何BYYEARDAY
被解释?如果是这样,它在哪里说明?而如果标准在这方面实际上并不清楚,是否有“事实上的标准”首选方式来处理这种情况?
python-dateutil - Python dateutil - 使用 BYMONTHDAY 选择最近日期的错误
我正在使用 python 的 dateutil 模块来解析我日历中的重复规则。以下规则出现问题:
从 dateutil.rrule 导入 rrulestr
这导致以下输出(缺少二月):
这是dateutil
模块中的错误,我应该如何修复它?还是我做错了什么?
python - 使用python获取两个日期之间的星期数
我想找到最pythonic的方式来输出两个日期之间的周数列表。
例如:
输入
输出
我一直在努力使用 datetime 库但收效甚微
icalendar - 周末的 RRULE,包括一个月的第一个星期日
我们每年都会在周末(Fr-Su)举办活动,其中包括 6 月的第一个星期日。我将如何创建一个表达这三天(全天事件)的iCalendar 事件?
为第一个星期日制定规则很容易。但是对于周六和周五,我没有成功创建倒数规则(RFC 5545说INTERVAL
,COUNT
必须是正数)。此外,我想不出从周五开始的不同表达方式——可能是最后一个周五五月,也是六月的第一。
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 规则”)不支持此功能。BYMONTHDAY
BYMONTH
我的下一个想法是使用多个RRULE
s —— 至少我在 RFC 中没有看到任何段落说明RRULE
最多只允许一个。所以我最终得到:
也没有用。我最后的手段是创建两个单独VEVENT
的 s,一个与第一个在RRULE
上面,一个与第二个RRULE
在上面,但其他方面相同。这有效,但它让我感到困惑。
没有更好的解决方案吗?你会怎么做?
php - 来自日期时间集合的规则
我正在制作一个经常性活动日历系统,但我遇到了一个问题。我的活动有一组 Period 项目,其中包含 StartedAt Datetime 和 EndedAt Datetime。
许多库允许我将我的 RRule 从字符串转换为类似 Period 的项目,但似乎相反的情况(将多个“DateTime-pairs”转换为 RRule 字符串)根本不常见。
关于这个有什么选择吗?
javascript - 根据特定时区生成规则
假设我让我的应用程序的用户设置了一个重复事件。他的时区是America/Denver
,因此我将其与rrule
确定重复发生时间的 一起存储。
假设我的服务器和我的所有用户都在同一个时区,这是可行的。但是,假设我有其他用户,America/Pheonix
也许America/New_York
谁想要获得用户定义的这个事件的发生。我需要能够使用America/Denver
时间创建事件,然后以 UTC 将它们返回给用户。相反,我还需要计算用户America/New_York
定义的重复事件并将其作为 UTC 返回给用户。
是否存在一个库,我可以给它一个时区和一个rrule
并让它根据该时区的规则(比如尊重 DST)生成重复事件?或者可能是第三方 API?
编辑:这是对我的问题的一些澄清。
假设我有一个重复性事件,每周五上午 9 点发生。如果我将此事件设置在科罗拉多州,则此事件发生的时间将与亚利桑那州的时间略有不同,亚利桑那州一年中的 5 个月没有夏令时。所以在我的数据库中,我需要存储时区,并且我需要一些方法来根据该时区的规则生成事件。这是我坚持的部分,寻找一种基于时区规则生成事件的方法。
python - 使用 rrule 将日期分配给相关月份
我能够使用 rrule 列出两个日期之间的天数,如下所示:
给出的输出是:
我怎样才能将这些日子分配给他们的相关月份以提供以下输出:
我也很好奇如何扩展它以包括计算中的时间,即。
谢谢 黑曼巴