Важные детали iCalendar RFC 2445

Об объектной модели Aspose iCalendar

Aspose.Email содержит все классы, предоставляемые компонентом Aspose iCalendar. Классы RecurrencePattern и RecurrenceRule являются центральными классами Aspose iCalendar и предоставляют конкретные реализации соответствующих элементов RFC 2445.

Класс RecurrencePattern представляет собой весь шаблон повторения. Вы можете создать новый шаблон повторения с нуля, используя конструктор по умолчанию, или загрузить существующий шаблон в CalendarRecurrence. Класс RecurrenceRule представляет собой часть RRULE или EXRULE шаблона повторения. RecurrenceRule предоставляет ряд свойств, которые напрямую соответствуют их аналогам в стандарте iCalendar. Например, ByMonth соответствует BYMONTH в iCalendar и так далее. Изучая или устанавливая значения свойств RecurrenceRule, вы можете анализировать или изменять правило повторения. Для получения дополнительной информации и примеров кода смотрите RecurrencePattern и RecurrenceRule в API Reference.

Важные детали iCalendar RFC 2445

В этом разделе рассматриваются следующие темы:

  • Форматы даты и времени.
  • DATE.
  • DATE-TIME с местным временем.
  • DATE-TIME с UTC-временем.
  • DATE-TIME с местным временем и часовым поясом.
  • BYWEEKNO обеспечивает соответствие ISO 8601.

Форматы даты и времени

Даты или даты с указанным временем могут использоваться в элементах DTSTART, UNTIL, EXDATE и RDATE при указании шаблона повторения. iCalendar определяет тип значения DATE для идентификации значений, содержащих календарную дату, и также определяет тип DATE-TIME для идентификации значений, которые указывают точную календарную дату и время суток. Значения DATE-TIME могут быть указаны в трех формах:

  • Местное время.
  • UTC-время.
  • Местное время и часовой пояс.

DATE

Согласно стандарту iCalendar, значения DATE должны следовать формату yyyyMMdd. Следующий пример представляет 14 июля 1997 года: 19970714

DATE-TIME с местным временем

Форма даты с местным временем представляет собой просто значение даты-времени, которое не содержит обозначение UTC и не ссылается на часовой пояс. Например, следующее представляет 18 января 1998 года в 23:00: DTSTART:19980118T230000. Значения даты-времени этого типа считаются “плавающими” и не привязаны к какому-либо конкретному часовому поясу. Они используются для представления одного и того же значения часа, минуты и секунды независимо от того, какой часовой пояс в данный момент наблюдается.

DATE-TIME с UTC-временем

Дата с UTC-временем, или абсолютное время, определяется суффиксом латинской ЗАГЛАВНОЙ БУКВЫ Z, обозначающим UTC, который добавляется к значению времени. Например, следующее представляет 19 января 1998 года в 07:00 UTC: DTSTART:19980119T070000Z. Обратите внимание, что Aspose iCalendar игнорирует суффикс формата UTC Z и рассматривает время как местное. Стандарт RFC2445 утверждает, что часть времени, указанная в правиле UNTIL шаблона повторения, должна быть в формате UTC. Это очень странное утверждение, и на самом деле в стандарте есть примеры, рассчитанные неправильно. Aspose iCalendar принимает время в любом формате в правиле UNTIL.

DATE-TIME с местным временем и часовым поясом

Чтобы сослаться на часовой пояс, DATE-TIME модифицируется свойством TZID. Например, следующее представляет 2:00 ночи в Нью-Йорке 19 января 1998 года: DTSTART;TZID=US-Eastern:19980119T020000. Обратите внимание, что на данный момент Aspose iCalendar игнорирует параметр TZID и рассматривает время как местное.

BYWEEKNO обеспечивает соответствие ISO 8601

Используйте BYWEEKNO только тогда, когда требуется соблюдение ISO 8601. Номера недель, определенные ISO 8601, очень отличаются от номеров недель в обычном смысле. Согласно ISO 8601, номер недели один календарного года — это первая неделя календарного года, которая содержит как минимум четыре дня. Це правило делает алгоритм специфичным для приложений, требующих соответствия ISO 8601, и делает его почти неприменимым для других целей. ISO 8601 поддерживается некоторыми европейскими банковскими и финансовыми приложениями. Он также используется на телевидении для бронирования рекламы. Правило BYWEEKNO указывает список чисел, разделенных запятыми, идентифицирующих недели года. Допустимые значения — от 1 до 53. Это соответствует номерам недель согласно нумерации недель, как определено в ISO 8601. BYWEEKNO действительно только для ГОДОВЫХ правил.