Icalendar 如何使用RRULE部件来实现;一个月两次;?

Icalendar 如何使用RRULE部件来实现;一个月两次;?,icalendar,rfc5545,Icalendar,Rfc5545,我正在将以下一组定期规则映射到RFC5545 RROLES(以创建Google日历事件): 从来没有 每日 周报 每隔一周 两个月 每4周 月刊 每温 每3个月 每4个月 两年 每年 每年 其中一些比其他的更容易(考虑每4周和两个月),并且已经实现了 假设这可以用RRLE表示,并且我的起始日期为2017/08/24(如果起始日期相关),我的RRLE需要满足什么条件,例如,两个月 奖金:如果有人提出“每隔一周”、“一年两次”等的RRULE,我将永远感激。要编写RRULE代码,需要非常具体。

我正在将以下一组定期规则映射到RFC5545 RROLES(以创建Google日历事件):

  • 从来没有
  • 每日
  • 周报
  • 每隔一周
  • 两个月
  • 每4周
  • 月刊
  • 每温
  • 每3个月
  • 每4个月
  • 两年
  • 每年
  • 每年
其中一些比其他的更容易(考虑每4周和两个月),并且已经实现了


假设这可以用RRLE表示,并且我的起始日期为2017/08/24(如果起始日期相关),我的RRLE需要满足什么条件,例如,两个月



奖金:如果有人提出“每隔一周”、“一年两次”等的RRULE,我将永远感激。

要编写RRULE代码,需要非常具体。”一周/月/年两次——如果你对一个人这样说,他们能计算出2019年的确切日期吗

每个序列都需要一个DTSTART,对于依赖于该日期或由该日期确定的循环序列来说,它绝对是必需的。每隔一周需要一天开始,可能每14天或每2周复发一次。一个月两次:哪几天?星期几相关吗?天数是由月初还是月底决定的

您可以使用FREQ、INTERVAL和所有BY's BYDAY、BYMONTHDAY、BYSETPOS等组合。有些组合“扩展”天数,有些组合“限制”天数

规范本身有一些例子。以下是更多的例子:

每月1日和15日两次

RRULE:FREQ=MONTHLY;BYMONTHDAY=1,15
每月两次,在第一个和第三个星期四

DTSTART;TZID=America/New_York:20170824T000000
RRULE:FREQ=MONTHLY;BYDAY=1TH,3TH
自2018年8月24日起每隔一周

DTSTART;TZID=America/New_York:20170824T000000
RRULE:FREQ=WEEKLY;INTERVAL=2
每年2月2日至8月最后一天两次

RRULE:FREQ=YEARLY;BYMONTHDAY=-2;BYMONTH=2,8
每年最后一天和第50天两次

RRULE:FREQ=YEARLY;BYSETPOS=-1,50

有许多可能的组合

要编写RRULE代码,需要非常具体。”一周/月/年两次——如果你对一个人这样说,他们能计算出2019年的确切日期吗

每个序列都需要一个DTSTART,对于依赖于该日期或由该日期确定的循环序列来说,它绝对是必需的。每隔一周需要一天开始,可能每14天或每2周复发一次。一个月两次:哪几天?星期几相关吗?天数是由月初还是月底决定的

您可以使用FREQ、INTERVAL和所有BY's BYDAY、BYMONTHDAY、BYSETPOS等组合。有些组合“扩展”天数,有些组合“限制”天数

规范本身有一些例子。以下是更多的例子:

每月1日和15日两次

RRULE:FREQ=MONTHLY;BYMONTHDAY=1,15
每月两次,在第一个和第三个星期四

DTSTART;TZID=America/New_York:20170824T000000
RRULE:FREQ=MONTHLY;BYDAY=1TH,3TH
自2018年8月24日起每隔一周

DTSTART;TZID=America/New_York:20170824T000000
RRULE:FREQ=WEEKLY;INTERVAL=2
每年2月2日至8月最后一天两次

RRULE:FREQ=YEARLY;BYMONTHDAY=-2;BYMONTH=2,8
每年最后一天和第50天两次

RRULE:FREQ=YEARLY;BYSETPOS=-1,50

有许多可能的组合

谢谢你的回复!我希望我可以不明确指定天数(希望服务器在给定开始日期的情况下这样做),似乎我还有更多的工作要做。规则可以给定开始日期,根据上面的示例,这取决于规则是什么,规则取决于可接受的日期。我很好奇这样做的目的是什么——来自服务器的随机日期真的可以接受吗?如果每年的1月1日和1月2日是一年两次,那可以接受吗?如果你的规则是从开始日期起每6个月一次,那就行了。这完全取决于目的是什么,然后你可以确定有意义的规则。你刚刚为我节省了两天的编码时间。我正要试着算出每个月第三周星期四的数字,这个符号是正确的!频率=每月;BYDAY=3感谢您的回复!我希望我可以不明确指定天数(希望服务器在给定开始日期的情况下这样做),似乎我还有更多的工作要做。规则可以给定开始日期,根据上面的示例,这取决于规则是什么,规则取决于可接受的日期。我很好奇这样做的目的是什么——来自服务器的随机日期真的可以接受吗?如果每年的1月1日和1月2日是一年两次,那可以接受吗?如果你的规则是从开始日期起每6个月一次,那就行了。这完全取决于目的是什么,然后你可以确定有意义的规则。你刚刚为我节省了两天的编码时间。我正要试着算出每个月第三周星期四的数字,这个符号是正确的!频率=每月;BYDAY=3