1

我正在创建一个应该符合rfc-2445 规范的日历应用程序。我在这里的全天活动遇到了一些问题,但现在已经解决,您可以在此处看到 SO 问题,但这迫使我提出以下问题。

当我选择全天活动时,例如从 20-10-2015 到 21-10-2015(活动持续时间为 2 天)实际上我需要在数据库中创建从 20-10-2015 到 22 的记录-10-2015,否则将显示为一日事件。

我的问题有两个部分:

  1. 以上是否正确并符合标准 rfc-2445?
  2. 我应该将此类事件存储在数据库中,从 20-10-2015 到 22-10-2015 并且当向最终用户显示其详细信息时,我应该从结束日期减少一天或将其存储为 20-10-2015 到 21-10- 2015 并在日历内渲染时在结束日期增加一天。

谢谢你。

4

1 回答 1

2

DTEND 属性对应于事件的非包含结束,所以,你上面的例子是正确的

请参阅https://www.rfc-editor.org/rfc/rfc5545#section-3.6.1,其中指定:

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

还有一个多日全天活动的例子:

以下是“VEVENT”日历组件的示例,用于表示从 2007 年 6 月 28 日到 2007 年 7 月 8 日(含)安排的多日活动。请注意,“DTEND”属性设置为 2007 年 7 月 9 日,因为“DTEND”属性指定事件的非包含结束。

   BEGIN:VEVENT
   UID:20070423T123432Z-541111@example.com
   DTSTAMP:20070423T123432Z
   DTSTART;VALUE=DATE:20070628
   DTEND;VALUE=DATE:20070709
   SUMMARY:Festival International de Jazz de Montreal
   TRANSP:TRANSPARENT
   END:VEVENT

你会注意到我指的是 RFC5545,它已经过时了 RFC2445。

于 2015-04-20T12:45:21.633 回答