Введення шаблонів повторень

Ви можете розглядати шаблон повторення як спосіб описати конкретний графік. Він містить достатньо інформації, щоб сформувати список появ (дат і часів) згідно з даним розкладом. Шаблон повторення може містити правила повторення, які описують цикли, що об’єднуються у загальний шаблон. Загалом, чим складніший шаблон повторення, тим більше правил повторення він міститиме. Шаблони повторень можуть включати виключення (не плутати з виключеннями, які представляють помилки, що виникають під час виконання програми). Виключення додають або видаляють дати появ у первинному шаблоні. Виключення можна вказати як явні появи або як окремий шаблон. Приклади шаблонів повторень з виключеннями:

  • Кожна друга п’ятниця, крім періоду з червня по серпень.
  • 1‑ше число кожного місяця, крім січня, коли має бути 2‑ге.

Шаблони повторень зазвичай є періодичними, але це не обов’язково. Шаблон повторення може бути повністю описаний лише як набір попередньо визначених дат і часу появи. RFC iCalendar визначає компоненти, такі як VEVENT або VTODO, які представляють події або завдання. Компоненти можуть мати властивості, такі як дата та час початку, опис, місце, учасники та повторення. Таким чином, шаблон повторення зазвичай існує як властивість повторюваного завдання або події. Властивості шаблону повторення, визначені iCalendar, це:

  • DTSTART — дата та час початку шаблону (також представляє перше входження, якщо його явно не виключено).
  • RRULE — визначає правило повторення для набору повторень.
  • RDATE — визначає список дат і часів, які слід включити до набору повторень.
  • EXRULE — визначає правило повторення для виключень з набору повторень.
  • EXDATE — визначає список дат і часів‑виключень з набору повторень.

Лише DTSTART є обов’язковим, і має бути лише один DTSTART. Усі інші властивості є необов’язковими та можуть бути вказані більше одного разу. Aspose.iCalendar приймає рядок у форматі iCalendar і зчитує шаблон повторення у RecurrencePattern об’єкт. Рядок може бути повним описом компонента iCalendar (наприклад, повним VEVENT) або лише фрагментом, що містить лише шаблон повторення. Після завантаження шаблону повторення у об’єкт RecurrencePattern ви можете:

  • Досліджувати та змінювати шаблон програмно за допомогою методів і властивостей, наданих Aspose.iCalendar
  • Створити дати/часи випадків у вказаному діапазоні дат.
  • Зберегти шаблон у форматі iCalendar.

Наступний фрагмент коду показує, що частина RRULE містить правило повторення.

Подивіться на зразки шаблонів повторень для ілюстрацій щодо створення шаблонів повторень.

Про модель об’єктів Aspose.iCalendar

Простір імен Aspose.iCalendar містить усі класи, надані компонентом Aspose.iCalendar. RecurrencePattern і RecurrenceRule є центральними класами Aspose.iCalendar і забезпечують конкретні реалізації відповідних елементів RFC 2445.

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

Зразки шаблонів

Цей розділ включає наступні теми:

  • Останній день місяця.
  • Останній робочий день кожного місяця.
  • Останній понеділок року.
  • П’ятниця першого тижня ISO 8601 року.
  • Перша п’ятниця року.

Останній день місяця

Ці зразки шаблон повторення вказує останній день місяця, кожного місяця.

RRULE:FREQ=MONTHLY;BYMONTHDAY=-1

Аналогічно, якщо вам потрібна подія за день до останнього дня місяця, використовуйте BYMONTHDAY=-2. Якщо вказати BYMONTHDAY=31, то згідно зі стандартом iCalendar у місяцях, що мають менше 31 дня, подія не буде створена.

Останній робочий день кожного місяця

Ці зразки шаблон повторення вказує останній робочий день місяця, кожного місяця. Робочі дні визначаються як дні, у які ви працюєте. Наприклад, у Європі робочі дні зазвичай з понеділка по п’ятницю.

RRULE:FREQ=MONTHLY;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-1

Вказане правило визначає всі робочі дні місяця та обирає останній з них. Результатом є останній робочий день місяця.

Останній понеділок року

Цей приклад шаблон повторення вказує подію, що відбувається в останній понеділок року.

RRULE:FREQ=YEARLY;BYDAY=-1MO

П’ятниця першого тижня ISO 8601 року

Цей приклад шаблон повторення вказує п’ятницю першого тижня року. У специфікації ISO 8601 першим тижнем року вважається тиждень, у якому є принаймні чотири дні. Коли рік починається в суботу, наприклад, тиждень 1 — це наступний тиждень, що починається в понеділок, 3 січня.

FREQ=YEARLY;BYWEEKNO=1;BYDAY=FR

Перша п’ятниця року

Цей приклад шаблон повторення вказує подію, що відбувається в першу п’ятницю року.

FREQ=YEARLY;BYDAY=1FR

У 1999 році, наприклад, перша п’ятниця року — 1999/01/01, тоді як п’ятниця першого тижня ISO 8601 — 1999/01/08.