Présentation des modèles de récurrence

Vous pouvez considérer un modèle de récurrence comme un moyen de décrire un planning particulier. Il contient juste assez d’informations pour construire une liste d’occurrences (dates et heures) selon un planning donné. Un modèle de récurrence peut contenir des règles de récurrence qui décrivent des cycles combinés pour former le modèle global. En général, plus le modèle de récurrence est complexe, plus il contiendra de règles de récurrence. Les modèles de récurrence peuvent inclure des exceptions (à ne pas confondre avec les exceptions qui représentent des erreurs survenant durant l’exécution de l’application). Les exceptions ajoutent ou retirent des dates d’occurrence au modèle original. Les exceptions peuvent être spécifiées comme des occurrences explicites ou comme un modèle elles‑mêmes. Exemples de modèles de récurrence avec exceptions :

  • Chaque deuxième vendredi, sauf de juin à août.
  • Le 1er de chaque mois, sauf en janvier, où il doit être le 2.

Les modèles de récurrence sont le plus souvent périodiques, mais ils n’ont pas à l’être. Un modèle de récurrence peut être complètement décrit simplement comme un ensemble de dates et heures d’occurrences prédéfinies. Le RFC iCalendar définit composants, tels que VEVENT ou VTODO qui représentent des événements ou des tâches. Les composants peuvent avoir des propriétés comme la date‑heure de début, la description, le lieu, les participants et la récurrence. Un modèle de récurrence, par conséquent, existe généralement comme propriété d’une tâche récurrente ou d’un événement. Les propriétés de modèle de récurrence définies par iCalendar sont :

  • DTSTART – la date et l’heure de début du modèle (représente également la première occurrence si elle n’est pas explicitement exclue).
  • RRULE – spécifie une règle de répétition pour un ensemble de récurrence.
  • RDATE – définit une liste de dates et d’heures à inclure dans un ensemble de récurrence.
  • EXRULE – spécifie une règle de répétition pour les exceptions d’un ensemble de récurrence.
  • EXDATE – définit une liste d’exceptions de date et d’heure d’un ensemble de récurrence.

Seul le champ DTSTART est requis et il ne doit y en avoir qu’un seul. Toutes les autres propriétés sont facultatives et peuvent être spécifiées plusieurs fois. Aspose.iCalendar prend une chaîne au format iCalendar et lit le modèle de récurrence dans un RecurrencePattern objet. La chaîne peut être une description complète d’un composant iCalendar (par exemple, un VEVENT complet) ou simplement un fragment contenant uniquement le modèle de récurrence. Une fois le modèle de récurrence chargé dans un objet RecurrencePattern, vous pouvez :

  • Examiner et modifier le modèle programmatiquement via les méthodes et propriétés fournies par Aspose.iCalendar
  • Générer les dates/heures d’occurrence dans une plage de dates spécifiée.
  • Enregistrer le modèle au format iCalendar.

Le fragment de code suivant vous montre que la partie RRULE contient la règle de récurrence.

Regardez le exemples de modèles de récurrence pour illustrer comment créer des modèles de récurrence.

À propos du modèle d’objet Aspose.iCalendar

L’espace de noms Aspose.iCalendar regroupe toutes les classes fournies par le composant Aspose.iCalendar. RecurrencePattern et RecurrenceRule sont les classes centrales d’Aspose.iCalendar et fournissent des implémentations concrètes des éléments correspondants du RFC 2445.

La classe RecurrencePattern représente le modèle complet de récurrence. Vous pouvez créer un nouveau modèle de récurrence à partir de zéro en utilisant le constructeur par défaut ou charger un modèle existant au format iCalendar avec la méthode statique FromiCalendar. La classe RecurrenceRule représente la partie RRULE ou EXRULE d’un modèle de récurrence. RecurrenceRule expose un certain nombre de propriétés qui correspondent directement à leurs homologues dans la norme iCalendar. Par exemple, ByMonth correspond à BYMONTH dans iCalendar, etc. En examinant ou en définissant les valeurs des propriétés de RecurrenceRule, vous pouvez analyser ou modifier une règle de récurrence. Pour plus d’informations et des exemples de code, voir RecurrencePattern et RecurrenceRule dans la Référence de l’API.

Modèles d’exemple

Cette section comprend les sujets suivants :

  • Le dernier jour du mois.
  • Le dernier jour ouvré de chaque mois.
  • Le dernier lundi de l’année.
  • Vendredi de la première semaine ISO 8601 de l’année.
  • Premier vendredi de l’année.

Le dernier jour du mois

Ces exemples modèle de récurrence spécifie le dernier jour du mois, chaque mois.

RRULE:FREQ=MONTHLY;BYMONTHDAY=-1

De même, si vous voulez une occurrence un jour avant le dernier jour du mois, utilisez BYMONTHDAY=-2. Si vous spécifiez BYMONTHDAY=31, alors selon la norme iCalendar, aucune occurrence ne sera générée dans les mois qui ont moins de 31 jours.

Le dernier jour ouvré de chaque mois

Ces exemples modèle de récurrence spécifie le dernier jour ouvré du mois, chaque mois. Les jours ouvrés sont définis comme les jours où vous travaillez. En Europe, par exemple, les jours ouvrés sont généralement du lundi au vendredi.

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

La règle ci‑dessus spécifie tous les jours ouvrés d’un mois et sélectionne le dernier d’entre eux. Le résultat net est le dernier jour ouvré d’un mois.

Le dernier lundi de l’année

Cet exemple modèle de récurrence spécifie un événement qui se produit le dernier lundi de l’année.

RRULE:FREQ=YEARLY;BYDAY=-1MO

Vendredi de la première semaine ISO 8601 de l’année

Cet exemple modèle de récurrence spécifie le vendredi de la première semaine de l’année. Dans la spécification ISO 8601, la première semaine de l’année est celle qui comporte au moins quatre jours. Lorsqu’une année débute un samedi, par exemple, la semaine 1 est la semaine immédiatement suivante, commençant le lundi 3 janvier.

FREQ=YEARLY;BYWEEKNO=1;BYDAY=FR

Premier vendredi de l’année

Cet exemple modèle de récurrence spécifie un événement qui se produit le premier vendredi de l’année.

FREQ=YEARLY;BYDAY=1FR

En 1999, par exemple, le premier vendredi de l’année est le 1999/01/01, tandis que le vendredi de la première semaine ISO 8601 est le 1999/01/08.