我将以下一组重复规则映射到 RFC5545 RRULE(以创建 Google 日历事件):
其中一些比其他更容易(考虑 Every4Weeks 与 TwiceAMonth)并且已经实施。
假设这可以用 RRULE 表示,并且我有一个开始日期2017/08/24(如果开始日期相关)我的 RRULE 需要满足什么条件,例如,TwiceAMonth?
奖励:如果有人提出“每隔一周”、“一年两次”等的 RRULE,我将永远感激不尽。
要编写 RRULE 代码,需要非常具体。“每周/每月/每年两次”——如果你对一个人说这句话,他们能算出 2019 年的确切日子吗?
每个序列都需要一个 DTSTART,对于依赖于该日期或由该日期确定的重复序列肯定需要它。EG:每隔一周需要一天开始,并且可能每 14 天或每 2 周重复一次。一个月两次:哪天?星期几相关?天数是由月初还是月底决定的?
您可以使用 FREQ、INTERVAL 和所有“BY's BYDAY、BYMONTHDAY、BYSETPOS 等”的组合。一些“扩展”天数,一些“限制”天数。
规范本身有一些示例https://icalendar.org/iCalendar-RFC-5545/3-8-5-3-recurrence-rule.html。以下是更多示例:
每月1日和15日两次
RRULE:FREQ=MONTHLY;BYMONTHDAY=1,15
Run Code Online (Sandbox Code Playgroud)
每个月的第一个和第三个星期四两次
DTSTART;TZID=America/New_York:20170824T000000
RRULE:FREQ=MONTHLY;BYDAY=1TH,3TH
Run Code Online (Sandbox Code Playgroud)
从 2018 年 8 月 24 日起每隔一周
DTSTART;TZID=America/New_York:20170824T000000
RRULE:FREQ=WEEKLY;INTERVAL=2
Run Code Online (Sandbox Code Playgroud)
每年 2 月和 8 月的第 2 天到最后一天两次
RRULE:FREQ=YEARLY;BYMONTHDAY=-2;BYMONTH=2,8
Run Code Online (Sandbox Code Playgroud)
一年两次的最后一天和第 50 天
RRULE:FREQ=YEARLY;BYSETPOS=-1,50
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2114 次 |
| 最近记录: |