问题标签 [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 回答
903 浏览

standards - iCalendar UNTIL 规则必须与 DTSTART 属性的类型相同?

iCalendar RFC 5545, section 3.3.10中,我看到以下 UNTIL 参数描述:

UNTIL 规则部分的值必须与“DTSTART”属性具有相同的值类型。此外,如果“DTSTART”属性被指定为带有本地时间的日期,那么 UNTIL 规则部分也必须被指定为带有本地时间的日期。如果“DTSTART”属性指定为带有 UTC 时间的日期或带有本地时间和时区参考的日期,则 UNTIL 规则部分必须指定为带有 UTC 时间的日期。

但是,在3.8.5.3 Recurrence Rule段落中,UNTIL 始终以 UTC 指定,与 DTSTART 属性无关:

总共有5个这样的例子。

我还发现,无论 DTSTART 属性如何,至少有 2 个 CalDAV 客户端(iOS 和 Mozilla Lightning)总是以 UTC 格式提交 UNTIL 参数。

UNTIL 必须始终使用 UTC 的唯一位置是 VTIMEZONE 中的 RRULE。还是我没有得到什么?

0 投票
1 回答
2068 浏览

java - iCal4j/biweekly 和 google-rfc-2445 有什么区别?

现在我正在使用google-rfc-2445库来评估重复事件,并生成实际日期,例如要知道什么时候会发生由以下 RRULE 定义的事件:RRULE:FREQ=MONTHLY;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-1

我正在使用双周库来生成 *.ics 文件。实际上它与iCal4j相同,但 API 更易于使用。

我看到这两个库在某种程度上都具有可互换的功能,所以我的问题是,我可以对这两个任务使用单个库(iCal4j/biweekly)吗?生成重复事件并导出/导入 *.ics 文件?

0 投票
1 回答
744 浏览

icalendar - 如果 DTSTART 的日期不在 BYDAY 指定的日期中,我如何从生成的事件中排除它?

我正在使用google-rfc-2445根据 rfc-2445 生成重复事件

“VEVENT”的“DTSTART”属性指定事件的包含开始。对于重复事件,它还指定重复集中的第一个实例。

因此,例如每周五发生 5 次的事件的 RRULE:

所以根据rfc-2445它将产生 6 个事件。第一个事件 on Thursday 4 February 2016,第二个事件 on Friday 5 February 2016,依此类推。

如果它不在模式中,我如何实现它将排除第一个事件?在上面的示例中,它应该排除第一次出现的4 February 2016. 如果定义DTSTART;TZID=US-Eastern:20160205T090000哪个是星期五,则应保留第一次出现。

是否可以通过自行定义此类“排除规则”来完成,RRULE或者我需要在代码中进行检查,如果DTSTART与中定义的日期不同,BYDAY我应该(手动)在代码中查找最接近的日期并DTSTART相应地进行更改?

更新 好的,根据 rfc-2445 和谷歌组上的这个问题:https ://groups.google.com/forum/#!topic/google-rfc-2445/xqYFe411ysA

“EXDATE”属性可用于排除
“DTSTART”中指定的值。然而,在这种情况下,原始“DTSTART”日期
仍必须由日历和调度系统维护,因为
原始“DTSTART”值与其他属性(例如“RECURRENCE-ID”)具有内在的使用依赖性。

看起来我需要使用EXDATE属性来实现我需要的东西。尝试通过遵循 RRULE 来实现这一点:

开始日期是:2016-02-10T00:00:00.000+02:00在以下代码中:

但它只返回 4 个事件,所以它总是删除第一个事件。

0 投票
2 回答
202 浏览

c - 解析 iCal 文件的提示

我正在尝试根据 RFC 5545 解析 iCal 输入文件。具体而言: - 属性名称 - 可选参数,每个参数都以分号“;”开头 并且可能有多个逗号分隔值(参数值可能是双引号,在这种情况下它们可能包含冒号、分号和逗号) -冒号“:” -属性值

示例行:

在这种情况下,该行将被读入缓冲区并解析(当前使用 strtok),如下所示: Organizer 是属性名称;CN=Obi-WanKenobi 和 SENTBY="mailto:obiwan@padawan.com" 是参数;mailto:lauwaion@padawan.com 是属性值。

我不知道从哪里开始。不同的输入案例几乎是无限的,我无法找到一种有效的算法来涵盖所有上述案例。strtok 是要走的路吗?或者是否有另一个具有更智能解析器的 C 库?需要有人让我走上正轨。

0 投票
2 回答
1083 浏览

icalendar - 如何更新 ICal 上的重复发生

我目前正在使用 ical 格式,需要处理重复发生的事件。

我直接与 Icloud 合作,并设法创建和删除重复事件。

但是,在尝试更新所述重复出现的单个事件时,我遇到了一些问题。

例如,假设我在一周内每天安排一个名为“测试”的活动。我应该如何将星期二的出现重命名为“其他标题”?甚至更改此特定事件的日期?

我试图通过使用它的 ID 来简单地更新发生,但它似乎创建了它的克隆并且没有触及真实的发生。此外,当尝试从 Icloud 日历界面访问克隆的事件时,它会崩溃。

所以我有点卡住了,希望能得到一些帮助:)

非常感谢,

0 投票
2 回答
185 浏览

icalendar - RFC 5545 的 DURATION 字符串部分的含义是什么?

http://icalendar.org/iCalendar-RFC-5545/3-3-6-duration.html - 这是对文档的引用。这有点不言自明,但仍然有点难以理解。也许有人可以解释一下PinP15DT5H0M20S代表什么?此外,也许还有一些其他代码字符可以代替P. 如果是这样,其他角色是什么?

0 投票
1 回答
933 浏览

fullcalendar - 根据 RFC5545 和 Fullcalendar 的独占/包含 DTEND 和时间部分,如何正确执行?

根据rfc5545

“VEVENT”日历组件的“DTEND”属性指定事件的非包含结束。

同样在事件对象属性的完整日历文档中也end写了相同的内容:

事件结束的唯一日期/时间。可选的。

Moment-ish 输入,如 ISO8601 字符串。在整个 API 中,这将成为一个真正的 Moment 对象。

这是事件结束后的瞬间。例如,如果活动的最后一整天是星期四,则活动的唯一结束时间将是星期五 00:00:00!

对于全天活动,一切都很清楚,如果从 2016 年 3 月 24 日到 2016 年 3 月 25 日的活动,我需要根据上述从 24/03/2016 到 25/03/2016 进行写作。

现在,我的问题是当事件 from to时,我应该如何在DTEND中写入,即 30 分钟事件?我是否需要写信 来创建不包含在内的结束日期?24/03/2016 10:0024/03/2016 10:3024/03/2016 10:30:01

0 投票
1 回答
271 浏览

calendar - 是否可以为每年从开始日/月到结束日/月每 2 周重复一次的事件定义规则 (RFC5545)?

例子:

每年 1 月 15 日至 5 月 10 日期间的每周一,每两周重复一次。

0 投票
1 回答
1078 浏览

icalendar - 带有开始时间和结束时间的重复事件的 iCal 格式

假设我想在每周一上午 10 点到下午 5 点安排一次团队会议。这个时间表的 ical 格式是什么?

到目前为止,我有这个,但不确定如何指示结束时间。考虑到事件永远重复

DTSTART:19971022T100000 RRULE:FREQ=WEEKLY;INTERVAL=1;BYDAY=MO

0 投票
1 回答
183 浏览

icalendar - 取消并在同一个 VCALENDAR 中创建 VEVENTS,可以吗?

例如,如果用户取消了一个事件并创建了一个新事件,我可以在一个 *.ics 文件中发送这两项更改吗?取消(不更新)第一个事件并创建一个新事件?