重要的 iCalendar RFC 2445 细节

关于 Aspose iCalendar 对象模型

Aspose.Email 包含了 Aspose 提供的所有类 iCalendar 组件 RecurrencePatternRecurrenceRule 是 Aspose 的核心类 iCalendar,并提供相应 RFC 2445 元素的具体实现。

RecurrencePattern 类表示整个重复模式。您可以使用默认构造函数从头创建新的重复模式,或在 CalendarRecurrence。该 RecurrenceRule 类表示重复模式中的 RRULE 或 EXRULE 部分。 RecurrenceRule 公开了多个属性,这些属性直接映射到 iCalendar 标准中的对应项。例如,ByMonth 映射到 iCalendar 中的 BYMONTH,类推。通过检查或设置这些属性的值, RecurrenceRule 属性,可用于分析或修改重复规则。欲了解更多信息和代码示例,请参见 RecurrencePatternRecurrenceRule 在 API 参考中。

重要的 iCalendar RFC 2445 细节

本节包括以下主题:

  • 日期和时间格式。
  • DATE。
  • 本地时间的 DATE‑TIME。
  • 带 UTC 时间的 DATE‑TIME。
  • 本地时间和时区的 DATE‑TIME。
  • BYWEEKNO 提供 ISO 8601 合规性

日期和时间格式

在指定重复模式时,日期或带时间的日期可用于 DTSTART、UNTIL、EXDATE 和 RDATE 元素。iCalendar 定义了 DATE 值类型用于标识仅包含日历日期的值,并定义了 DATE‑TIME 类型用于标识精确的日历日期和时间。DATE‑TIME 值可以采用以下三种形式:

  • 本地时间。
  • UTC 时间。
  • 本地时间和时区。

DATE

根据 iCalendar 标准,DATE 值必须使用 yyyyMMdd 格式。下面的示例表示 1997 年 7 月 14 日:19970714

本地时间的 DATE-TIME

本地时间形式的日期仅是一个不包含 UTC 标识符且未引用时区的日期时间值。例如,以下表示 1998 年 1 月 18 日晚上 11 点:DTSTART:19980118T230000。此类日期时间值被称为“浮动”,不绑定于特定时区。它们用于在任何时区下都表示相同的小时、分钟和秒数。

带 UTC 时间的 DATE-TIME

带有 UTC 时间(或绝对时间)的日期通过在时间值后附加拉丁大写字母 Z(UTC 标识符)来标识。例如,以下表示 1998 年 1 月 19 日 07:00 UTC:DTSTART:19980119T070000Z。请注意,Aspose iCalendar 忽略 UTC 格式的 Z 后缀并将时间视为本地时间。RFC2445 标准声明,重复模式的 UNTIL 规则中指定的时间部分必须采用 UTC 格式。这是一个非常奇怪的说法,事实上,标准中还有计算错误的示例。Aspose iCalendar 在 UNTIL 规则中接受任意格式的时间。

包含本地时间和时区的 DATE-TIME

要引用时区,需要使用 TZID 属性修改 DATE-TIME。例如,以下表示 1998 年 1 月 19 日纽约时间上午 2 点:DTSTART;TZID=US-Eastern:19980119T020000。请注意,Aspose iCalendar 当前会忽略 TZID 参数并将时间视为本地时间。

BYWEEKNO 提供 ISO 8601 合规性

仅在符合 ISO 8601 是必需的。ISO 8601 定义的周数与通常意义上的周数大不相同。根据 ISO 8601,日历年的第一周是该年中包含至少四天的第一周。此规则使算法专用于需要符合 ISO 8601 的应用程序,几乎不适用于其他用途。ISO 8601 被一些欧洲银行和金融应用所支持,也用于电视广告预定。BYWEEKNO 规则指定一个逗号分隔的数字列表,用于标识一年中的周。有效值为 1 到 53。该范围对应 ISO 8601 所定义的周编号。BYWEEKNO 仅在 YEARLY(年度)规则中有效。