Invoering van terugkeerpatronen

Je kunt een recurrence pattern zien als een manier om een bepaald schema te beschrijven. Het bevat net genoeg informatie om een lijst van gebeurtenissen (datums en tijden) op te bouwen volgens een gegeven schema. Een terugkeerpatroon kan terugkeerregels bevatten die cycli beschrijven die samen het volledige patroon vormen. Over het algemeen, hoe complexer een terugkeerpatroon is, des te meer terugkeerregels het zal bevatten. Terugkeerpatronen kunnen exceptions omvatten (niet te verwarren met uitzonderingen die fouten tijdens de uitvoering van een applicatie aangeven). Uitzonderingen voegen datum‑tijden toe aan of verwijderen die van het oorspronkelijke patroon. Uitzonderingen kunnen gespecificeerd worden als expliciete gebeurtenissen of als een patroon zelf. Voorbeelden van terugkeerpatronen met uitzonderingen:

  • Elke tweede vrijdag, behalve van juni tot en met augustus.
  • De eerste van elke maand, behalve in januari, wanneer het de tweede moet zijn.

Terugkeerpatronen zijn meestal periodiek, maar ze hoeven dat niet te zijn. Een terugkeerpatroon kan volledig worden beschreven als een reeks vooraf gedefinieerde datums en tijden van voorkomens. De iCalendar RFC definieert componenten, zoals VEVENT of VTODO die gebeurtenissen of taken vertegenwoordigen. De componenten kunnen eigenschappen hebben zoals startdatum‑tijd, beschrijving, locatie, aanwezigen en terugkeer. Een terugkeerpatroon bestaat daarom normaal gezien als een eigenschap van een terugkerende taak of een gebeurtenis. Door iCalendar gedefinieerde terugkeerpatroon‑eigenschappen zijn:

  • DTSTART - de startdatum en -tijd van het patroon (vertegenwoordigt ook de eerste gebeurtenis indien niet expliciet uitgesloten).
  • RRULE - specificeert een herhalingsregel voor een terugkeerreeks.
  • RDATE - definieert een lijst van data en tijden die in een terugkeerreeks moeten worden opgenomen.
  • EXRULE - specificeert een herhalingsregel voor excepties van een terugkeerreeks.
  • EXDATE - definieert een lijst van datum‑ en tijds‑excepties van een terugkeerreeks.

Alleen DTSTART is vereist en er mag slechts één DTSTART zijn. Alle andere eigenschappen zijn optioneel en kunnen meer dan eens worden gespecificeerd. Aspose.iCalendar neemt een string in iCalendar‑formaat en leest het terugkeerpatroon in een RecurrencePattern object. De string kan een volledige beschrijving van een iCalendar‑component zijn (bijvoorbeeld een volledige VEVENT) of alleen een fragment dat het terugkeerpatroon bevat. Zodra het terugkeerpatroon is geladen in een RecurrencePattern‑object, kunt u:

  • Onderzoek en wijzig het patroon programmatisch via methoden en eigenschappen geleverd door Aspose.iCalendar
  • Genereer datum/tijd‑gebeurtenissen in een opgegeven datumbereik.
  • Sla het patroon op in iCalendar‑formaat.

Het volgende codefragment toont dat het RRULE‑deel de terugkeerregel bevat.

Bekijk de voorbeeld terugkeerpatronen voor illustraties over hoe terugkeerpatronen te maken.

Over het Aspose.iCalendar objectmodel

De namespace Aspose.iCalendar bevat alle klassen die door de Aspose.iCalendar‑component worden geleverd. RecurrencePattern en RecurrenceRule zijn de centrale klassen van Aspose.iCalendar en bieden concrete implementaties van de overeenkomstige RFC 2445‑elementen.

De klasse RecurrencePattern vertegenwoordigt het volledige terugkeerpatroon. Je kunt een nieuw terugkeerpatroon vanaf nul maken met de standaardconstructor of een bestaand patroon in iCalendar‑formaat laden via de statische FromiCalendar‑methode. De klasse RecurrenceRule vertegenwoordigt het RRULE‑ of EXRULE‑gedeelte van een terugkeerpatroon. RecurrenceRule biedt een aantal eigenschappen die rechtstreeks overeenkomen met hun tegenhangers in de iCalendar‑standaard. Bijvoorbeeld, ByMonth correspondeert met BYMONTH in iCalendar, enzovoort. Door de waarden van de RecurrenceRule‑eigenschappen te bekijken of in te stellen, kun je een terugkeerregel analyseren of wijzigen. Zie voor meer informatie en code‑voorbeelden RecurrencePattern en RecurrenceRule in de API‑referentie.

Voorbeeldpatronen

Deze sectie bevat de volgende onderwerpen:

  • De laatste dag van de maand.
  • De laatste werkdag van elke maand.
  • De laatste maandag van het jaar.
  • Vrijdag van de eerste ISO 8601‑week van het jaar.
  • Eerste vrijdag van het jaar.

De laatste dag van de maand

Deze voorbeelden terugkeerpatroon specificeert de laatste dag van de maand, elke maand.

RRULE:FREQ=MONTHLY;BYMONTHDAY=-1

Op dezelfde manier, als je een gebeurtenis wilt op een dag vóór de laatste dag van de maand, gebruik dan BYMONTHDAY=-2. Als je BYMONTHDAY=31 opgeeft, zal er volgens de iCalendar‑standaard geen gebeurtenis worden gegenereerd in maanden met minder dan 31 dagen.

De laatste werkdag van elke maand

Deze voorbeelden terugkeerpatroon specificeert de laatste werkdag van de maand, elke maand. Werkdagen worden gedefinieerd als de dagen waarop je werkt. In Europa zijn werkdagen bijvoorbeeld normaal gesproken van maandag tot en met vrijdag.

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

De bovenstaande regel specificeert alle werkdagen van een maand en selecteert de laatste daarvan. Het eindresultaat is de laatste werkdag in een maand.

De laatste maandag van het jaar

Dit voorbeeld terugkeerpatroon specificeert een gebeurtenis die plaatsvindt op de laatste maandag van het jaar.

RRULE:FREQ=YEARLY;BYDAY=-1MO

Vrijdag van de eerste ISO 8601‑week van het jaar

Dit voorbeeld terugkeerpatroon specificeert de vrijdag van de eerste week van het jaar. In de ISO‑8601‑specificatie is de eerste week van het jaar de week die minimaal vier dagen bevat. Wanneer een jaar op een zaterdag begint, is week 1 bijvoorbeeld de week die er direct op volgt en begint op maandag 3 januari.

FREQ=YEARLY;BYWEEKNO=1;BYDAY=FR

Eerste vrijdag van het jaar

Dit voorbeeld terugkeerpatroon specificeert een gebeurtenis die plaatsvindt op de eerste vrijdag van het jaar.

FREQ=YEARLY;BYDAY=1FR

In 1999 is bijvoorbeeld de eerste vrijdag van het jaar 1999/01/01, terwijl de vrijdag van de eerste ISO‑8601‑week 1999/01/08 is.