问题标签 [rfc5545]

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.

0 投票
1 回答
2536 浏览

icalendar - 从扩展的 iCalendar RRule 确定事件

我正在阅读 RFC 5545 并尝试确定如何正确找到一组事件。假设我有一个 WEEKLY rrule = 2(每隔一周)。我还为 Tue、Wed、Thu 指定了 BYDAY 规则部分。假设我的开始日期是 2011 年 4 月 7 日(星期四),我的结束日期是 2011 年 4 月 27 日(星期三)。显然忽略不重要的日期,我认为我的事件集将包含:2011-04-07、2011-04-12、2011-04-13、2011-04-21、2011-04-26、2011-04- 27.

让我失望的是 RFC 中的以下声明:“WKST 规则部分指定工作周的开始日期。有效值为 MO、TU、WE、TH、FR、SA 和 SU。当每周“RRULE”的间隔大于 1,并且指定了 BYDAY 规则部分。

因此,如果我的 WKST=MO,我从上述语句中看到了一个暗示,即一周不是从开始日期开始,而是从 WKST 开始。这意味着不是使用基于开始日期的一周,在这种情况下,周四至周三,我需要实际从 WKST 开始,并确定哪些事件发生在该周(周一至周日)以及从该 WKST 开始的每隔一周. 因此,出于计算目的,我的开始日期实际上是 2011-04-04。那是在开始日期之前,所以我跳到开始日期,但我坚持周一至周日。这意味着我的事件集实际上是:2011-04-07、2011-04-19、2011-04-20、2011-04-21。这与我原来的设置有很大不同。

此外,如果这是计算的正确方法,这是否也意味着在扩展具有 >1 间隔的其他频率的规则情况时,我必须在该期间的开始而不是开始日期“开始”。MONTHLY 是否包含开始日期当月的第一天 - 最后一天。YEARLY 是否包括开始日期当年的 1 月 1 日 - 12 月 31 日?

我希望那里有一位 iCalendar 大师……我无法理解这里的逻辑。谢谢。

更新:我确实创建了一些 .ics 文件并导入谷歌日历。假设谷歌正确解释了这些,我可以确认使用 INTERVAL>1 的扩展 MONTHLY 将使用该月的第一天到最后一天,而不是从事件的开始日期开始的一个月。YEARLY 规则以相同的方式工作,年份从 1 月 1 日到 12 月 31 日。不是我最初的预期,但希望这可以帮助其他人。

0 投票
1 回答
6755 浏览

javascript - 生成 iCal 格式的 Javascript 库?

有谁知道是否有任何生成 iCal 格式的 JavaScript 库?(RFC 5545 或 RFC 2445 标准)

如果它还为它提供用户界面,那就太好了。类似于 OWA 重复窗口或 Google 日历重复弹出窗口。

谢谢你。

在此处输入图像描述

0 投票
2 回答
2026 浏览

icalendar - 如何从 iCalendar RRULE 获取发生日期列表

我有带有 RRULE 的 iCalendar 文件以供出现。如何根据 iCal 文件中的给定开始日期和 RRULE 获取事件将发生的日期列表。

在 Java 中,我想编写一个方法,它应该采用开始日期和 RRULE 并返回发生日期列表。请帮助提供简单的解决方案或指示。

0 投票
1 回答
158 浏览

icalendar - 排除 iCalendar 中的时间段

我有一个非常简单的事件“每周一 9 点到 5 点”以及一些不发生此事件的时间段。比如 7.8.2011 到 24.10.2011。在 iCalendar 中表示这一点的最佳方式是什么?

很多EXDATE?特殊的 EXRULE?

0 投票
3 回答
6709 浏览

java - ICal4j 中的重复规则

我正在尝试使用Ical4j.ics创建一个文件。 但是当我尝试添加重复时它失败了,抛出一个:
ValidationException

我添加重复的代码是:

如果没有这条规则,它可以正常工作,但我想在每个星期一添加这个事件,
直到12 December 2011(返回的日期dateTo)。有任何想法吗?

0 投票
2 回答
928 浏览

php - 我可以阻止 iCal 缓存我的 PHP 生成的 iCalendar 提要吗?

我使用 PHP 制作了一个动态生成的 iCalendar 提要,遵循 RFC 5545。它在大多数情况下工作得很好,除了 iCal(即 Mac OS X 的内置日历程序)似乎拒绝反映之前已经下载的事件的更新. 我假设这是由于缓存。有没有办法告诉 iCal 不要缓存我的提要?

编辑:哦,是的,我忘了提到每次调用提要时我已经尝试让每个 VEVENT 都有不同的 UID(我的 UID 格式是“id”,RFC 5545 的 DATE-TIME 格式的当前时间在哪里,并且是我数据库中事件的唯一 ID)。我也尝试过在标题中使用 Content-type;无论我将其设置为 text/plain 还是 text/calendar,都会出现此问题

0 投票
2 回答
11959 浏览

mysql - 重复事件、SQL 查询

我知道有关重复事件的问题很常见,但除了与日历应用程序有关的重复事件之外,我还没有找到一个回答这个关于重复事件的特定问题的答案。主要区别在于我们应用程序中的事件。只会在报告中或单独出现,而不是在日历格式中,尽管在许多方面它们非常相似,可能只是与日历相关的包袱更少。

与日历应用程序类似。事件可以一次性发生,也可以重复发生,例如每个星期四或每个月的第一个星期一,直到将来某个预先设定的时间。

这些事件存储在一个事件表中,其中包含开始和结束日期以及“循环类型 ID”。如果“recurrency type”为“None”,则开始日期和结束日期将相同。事件表包含一个单独的表的 ID,该表包含事件类型名称,例如“会议”或“每周报告”

还有一个包含“循环类型”列表的表格,例如“不重复”、“每周一”、“每月的第一个星期一”和“每月的最后一个星期六”。

为了使查找更容易,另一个表包含从 1960 年到 2060 年的日期列表以及每个日期的相关信息,例如是否是星期一,以及该月中的哪个星期一。

这允许进行如下查找:

p>

这正是查找重复事件所需要的,输出如下:

p>

要获得无重复事件,可以使用更简单的查询:

这提供了与第一个查询非常相似的输出,但至关重要的是,日期来自事件表而不是日期表。

我的问题是:如何将这些查询组合起来,得出一个包含所有事件的列表,包括按日期顺序重复和不重复的事件?


这些是表格和它们的缩短选择,为简洁起见,一些列和所有索引已被删除:)。出于同样的原因,未包含“名称”表。

p>


我们并非绝对使用上述代码或表格布局,欢迎任何可行的解决方案。请不要将我指向:

您将如何存储可能的重复时间?

在日历应用程序中模拟重复事件的最佳方法是什么?

在构建日历应用程序时,我应该在我的数据库中存储日期或重复规则吗?

或者

https://www.rfc-editor.org/rfc/rfc5545

我已经检查了它们,它们非常有用,但没有像我们预期的那样做。

TIA

0 投票
1 回答
443 浏览

icalendar - 检测 iCal 文件中的更改

我正在编写一个插入 Google 日历(或其他 iCal 支持的服务)并显示事件提醒的小型桌面应用程序。它会每隔一段时间自动重新下载 iCal 文件。如果文件校验和已更改,我会丢弃当前的约会缓存并重新解析日历。

问题是,这不适用于 Google 日历文件。经过进一步检查,我注意到每次我重新下载与某个日历关联的 iCal 文件时,所有事件的DTSTAMP: 属性都会发生变化。所以标准校验和可能不是这里的方法。我正在考虑两种主要的解决方案。

  • 根据原始文件计算校验和,并DTSTAMP:丢弃行。(肮脏的)
  • 实现一个完整的日历差异算法,检测日历的哪些部分是新的,哪些已被丢弃,哪些已更改等(昂贵)

我不知道iCal格式是否还有其他我还没有发现的怪癖,所以我不知道方法1是否能解决我的问题。有限的测试似乎表明确实如此。另一方面,就 CPU 功率而言,方法 2 似乎不必要地昂贵。

你有什么建议?

0 投票
1 回答
1419 浏览

icalendar - iCalendar (RFC5545) 重复规则一天多次

如何使用 RFC5545 中指定的 RRULE 使事件每天发生多次?

假设我希望每隔一周的周一和周五上午 11 点和晚上 18 点举行一次活动。是否可以像下面这样格式化 RRU​​LE:

RRULE:FREQ=WEEKLY;INTERVAL=2;BYDAY=MO,FR;[TIMES=110000,180000]

谢谢

0 投票
1 回答
1963 浏览

c# - 是否有存储和解析日历日期重复字符串的标准?

我正在尝试将重复事件信息存储到数据库中。我想将记录器存储到具有以下字段的数据库表中。

  • 开始日期 - 日期时间
  • 结束日期 - 日期时间
  • RecurrencePattern - 字符串

我想看看是否已经有一些标准格式来存储 RecurrencePattern 和一个关联的库来解析这个字符串 recurrenPattern 和一个开始/结束日期并转换成一组日期。我看到适用于 javascript,所以可能是 C# 的端口或类似的东西?

要将事件序列化到数据库,我真的必须创建一个新的 iCalendar 并为每个事件序列化一个日历吗?有没有办法使用这个库简单地将事件本身序列化到数据库?

根据 Jon Skeet 的回答更新了关于 DDay.iCal 的问题:

根据 jon skeet 的建议,我开始查看 DDay.iCal,它看起来非常好。我的一个后续问题是,在示例中,它似乎一次只能从磁盘读取一个完整的 ical (ics)。就我而言,我只是将事件独立存储在数据库表中。最好的方法是什么:

  1. 从数据库中读取这些事件
  2. 将独立事件保存到数据库(每个事件都是数据库表中的一行)

使用这个库?