Einführung in Wiederholungsmuster

Man kann ein Wiederholungsmuster als eine Möglichkeit verstehen, einen bestimmten Zeitplan zu beschreiben. Es enthält genau die Informationen, die nötig sind, um eine Liste von Vorkommnissen (Daten und Zeiten) gemäß einem gegebenen Zeitplan zu erzeugen. Ein Wiederholungsmuster kann Wiederholungsregeln enthalten, die Zyklen beschreiben, die sich zu einem Gesamtmuster kombinieren. Im Allgemeinen gilt: Je komplexer ein Wiederholungsmuster ist, desto mehr Wiederholungsregeln enthält es. Wiederholungsmuster können Ausnahmen enthalten (nicht zu verwechseln mit Ausnahmen, die Fehler während der Programmausführung darstellen). Ausnahmen fügen dem ursprünglichen Muster Auftrittsdaten hinzu oder entfernen sie. Ausnahmen können als explizite Vorkommnisse oder als eigenes Muster angegeben werden. Beispiele für Wiederholungsmuster mit Ausnahmen:

  • Jeden 2. Freitag, außer von Juni bis August.
  • Der 1. jedes Monats, außer im Januar, wo er am 2. sein sollte.

Wiederholungsmuster sind meist periodisch, müssen es aber nicht sein. Ein Wiederholungsmuster kann vollständig beschrieben werden als eine Menge vordefinierter Auftretensdaten und -zeiten. Das iCalendar‑RFC definiert Komponenten, wie z. B. VEVENT oder VTODO, die Ereignisse bzw. Aufgaben darstellen. Die Komponenten können Eigenschaften wie Startdatum‑Uhrzeit, Beschreibung, Ort, Teilnehmer und Wiederholung besitzen. Ein Wiederholungsmuster existiert daher normalerweise als Eigenschaft einer wiederkehrenden Aufgabe oder eines Ereignisses. Vom iCalendar definierte Wiederholungsmuster‑Eigenschaften sind:

  • DTSTART – das Startdatum und die Startzeit des Musters (repräsentiert außerdem das erste Vorkommen, sofern es nicht explizit ausgeschlossen wird).
  • RRULE – spezifiziert eine wiederholende Regel für ein Wiederholungs‑Set.
  • RDATE – definiert eine Liste von Daten und Zeiten, die in ein Wiederholungs‑Set aufgenommen werden sollen.
  • EXRULE – spezifiziert eine wiederholende Regel für Ausnahmen eines Wiederholungs‑Sets.
  • EXDATE – definiert eine Liste von Datums‑ und Uhrzeit‑Ausnahmen von einem Wiederholungs‑Set.

Nur DTSTART ist erforderlich und es darf nur ein DTSTART geben. Alle anderen Eigenschaften sind optional und können mehrfach angegeben werden. Aspose.iCalendar nimmt einen String im iCalendar‑Format und liest das Wiederholungsmuster in ein RecurrencePattern Objekt. Der String kann eine vollständige Beschreibung einer iCalendar‑Komponente sein (z. B. ein komplettes VEVENT) oder lediglich ein Fragment, das nur das Wiederholungsmuster enthält. Sobald das Wiederholungsmuster in ein RecurrencePattern‑Objekt geladen ist, können Sie:

  • Untersuchen und ändern Sie das Muster programmgesteuert über Methoden und Eigenschaften, die von Aspose.iCalendar bereitgestellt werden.
  • Erzeugen von Vorkommnis‑Datums‑/‑Zeitwerten in einem angegebenen Datumsbereich.
  • Muster im iCalendar‑Format speichern.

Das folgende Code‑Snippet zeigt, dass der RRULE‑Teil die Wiederholungsregel enthält.

Siehe das Beispiel‑Wiederholungsmuster zur Veranschaulichung, wie Wiederholungsmuster erstellt werden.

Über das Aspose.iCalendar‑Objektmodell

Der Namespace Aspose.iCalendar enthält alle von der Aspose.iCalendar‑Komponente bereitgestellten Klassen. RecurrencePattern und RecurrenceRule sind die zentralen Klassen von Aspose.iCalendar und bieten konkrete Implementierungen der entsprechenden RFC‑2445‑Elemente.

Die Klasse RecurrencePattern repräsentiert das gesamte Wiederholungsmuster. Sie können ein neues Wiederholungsmuster von Grund auf mit dem Standardkonstruktor erstellen oder ein bestehendes Muster im iCalendar‑Format mit der statischen Methode FromiCalendar laden. Die Klasse RecurrenceRule stellt den RRULE‑ oder EXRULE‑Teil eines Wiederholungsmusters dar. RecurrenceRule stellt mehrere Eigenschaften bereit, die direkt den Gegenstücken im iCalendar‑Standard zugeordnet sind. Zum Beispiel wird ByMonth auf BYMONTH in iCalendar abgebildet usw. Durch das Untersuchen oder Setzen der Werte der RecurrenceRule‑Eigenschaften können Sie eine Wiederholungsregel analysieren oder verändern. Weitere Informationen und Code‑Beispiele finden Sie in RecurrencePattern und RecurrenceRule in der API‑Referenz.

Beispielmuster

Dieser Abschnitt beinhaltet die folgenden Themen:

  • Der letzte Tag des Monats.
  • Der letzte Arbeitstag jedes Monats.
  • Der letzte Montag des Jahres.
  • Freitag der ersten ISO‑8601‑Woche des Jahres.
  • Erster Freitag des Jahres.

Der letzte Tag des Monats

Diese Beispiele Wiederholungsmuster gibt den letzten Tag des Monats an, jeden Monat.

RRULE:FREQ=MONTHLY;BYMONTHDAY=-1

Ebenso, wenn Sie ein Vorkommen an einem Tag vor dem letzten Tag des Monats wünschen, verwenden Sie BYMONTHDAY=-2. Wenn Sie BYMONTHDAY=31 angeben, wird gemäß dem iCalendar‑Standard in Monaten mit weniger als 31 Tagen kein Vorkommen erzeugt.

Der letzte Arbeitstag jedes Monats

Diese Beispiele Wiederholungsmuster gibt den letzten Arbeitstag des Monats an, jeden Monat. Arbeitstage sind die Tage, an denen Sie arbeiten. In Europa sind das zum Beispiel normalerweise Montag bis Freitag.

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

Die obige Regel definiert alle Arbeitstage eines Monats und wählt den letzten davon aus. Das Ergebnis ist der letzte Arbeitstag im Monat.

Der letzte Montag des Jahres

Dieses Beispiel Wiederholungsmuster gibt ein Ereignis an, das am letzten Montag des Jahres stattfindet.

RRULE:FREQ=YEARLY;BYDAY=-1MO

Freitag der ersten ISO‑8601‑Woche des Jahres

Dieses Beispiel Wiederholungsmuster gibt den Freitag der ersten Woche des Jahres an. In der ISO‑8601‑Spezifikation ist die erste Woche des Jahres diejenige, die mindestens vier Tage hat. Wenn ein Jahr zum Beispiel an einem Samstag beginnt, ist Woche 1 die unmittelbar folgende Woche, die am Montag, dem 3. Januar, startet.

FREQ=YEARLY;BYWEEKNO=1;BYDAY=FR

Erster Freitag des Jahres

Dieses Beispiel Wiederholungsmuster gibt ein Ereignis an, das am ersten Freitag des Jahres stattfindet.

FREQ=YEARLY;BYDAY=1FR

Im Jahr 1999 zum Beispiel ist der erste Freitag des Jahres der 1999/01/01, während der Freitag der ersten ISO‑8601‑Woche der 1999/01/08 ist.