icalendar - 如何在每月第一个星期六之前的星期五编写 ICS 文件?
问题描述
我已经看到如何为重复事件编写 ICS 文件?但是我有一个相当复杂的重复出现,并且在查看RRULE的语法后无法找出规则。
我想要在每个月的第一个星期六之前的星期五发生的事件。这个星期五之前的第一个星期六当然可能在上个月。我假设如果我能让这个工作,Friday-before-the-second-Saturday 和 -third- 和 -fourth- 的类似(但不相同)事件,未定义Friday-before-the-second-Saturday和-third-和-fourth-。
显然我有RRULE:FREQ=MONTHLY;BYDAY=FR;
,但如果我尝试使用一些示例,BYMONTHDAY
我会遇到麻烦:28
将是一个有效的Friday-before-a-first-Saturday in 2 月,但在任何其他月份,Friday 28th 将是周五之前第5个星期六。对于29
(闰年)30
和31
.
目标是将其包含在 Google 日历中,我知道它支持显示它无法编辑的 ICS RRULE。那么,假设有可能,我怎样才能为这个事件创建一个 RRULE?我已经考虑了每个月长度的单独事件和随附规则。31:一月、三月、五月、七月、八月、十月、十二月和 30:四月、六月、九月、十一月都可以,但闰年仍然是一个问题:二月 28 日可能是第一个星期六或第五个星期六之前的星期五(例如 2020 年,所以我的前两个案例之一失败了)。
解决方案
您在必须使用 BYDAY=FR 的情况下走在正确的轨道上,并且由于您可以使用负 BYMONTHDAY,以下应该可以解决问题:
RRULE:FREQ=MONTHLY;BYDAY=FR;BYMONTHDAY=-1,1,2,3,4,5,6
推荐阅读
- java - 在 HashMap 构造中按天对时间戳(日期对象)列表进行分组
- oracle - PL SQL中需要同时在不同会话中运行的不同SP写入单个日志文件
- python - python 编程出错 xml.etree.ElementTree.ParseError: not well-formed
- python - Odoo 电子邮件模板呈现错误
- sql-server - SQL Server 2014 按半小时间隔聚合事件持续时间
- jquery - 如何在 Web 应用程序 chrome.18n 中设计语言切换器
- python - 使用 pyserial 以 64 字节为增量在循环中发送起始地址
- python - json 文件模式/对象以触发模式以加载数据帧
- java - 为什么 Collections.min(Arrays.asList(new Base(), new Base())) 给出一个奇怪的编译错误(Eclipse)?
- javascript - 使用 webpack 构建的旧 Backbone 和 Marionette