1

我正在寻找一种iCalendar规则匹配算法,该算法将允许我验证用户输入的特定日期是否落在由 iCal 重复事件规则确定的日期。

例如:

  • 用户输入Nov 1, 2014(假设我可以解析日期)
  • ical事件的重复规则为FREQ=MONTHLY;BYMONTHDAY=1(这基本上意味着该事件发生在每个月的第一天)

很明显,2014 年 11 月 1 日确实是该事件中的某个日期。我怎样才能以编程方式解决这个问题?在给定开始日期的情况下,如何获取由重复规则确定的日期列表?

有没有这样做的示例或库?

我主要在寻找 JS 和 PHP 库/片段,但任何类型的伪代码都应该没问题。

澄清:iCalendar 指的是 RFC 5545 Internet Calendaring and Scheduling Core Object Specification

4

1 回答 1

1

对于 PHP:phpicalendar(此处),问题是该算法不容易与 JS 的其余代码隔离,有一些尝试,但我从未检查它们是否真的与 rfc5545 足够兼容。

这完全取决于您需要多少合规性:例如,添加时区支持将使您能够解决国家失去一天的罕见情况(例如萨摩亚岛,它在 2011 年 12 月 29 日至 12 月 31 日跳过)。

于 2012-05-18T15:02:09.153 回答