Introduktion till återkomstmönster

Du kan tänka på ett återkommande mönster som ett sätt att beskriva ett specifikt schema. Det innehåller precis tillräckligt med information för att bygga en lista över förekomster (datum och tider) enligt ett givet schema. Ett återkommande mönster kan innehålla återkommanderegler som beskriver cykler som kombineras för att bilda det övergripande mönstret. Generellt, ju mer komplext ett återkommande mönster är, desto fler återkommanderegler kommer det att innehålla. Återkommande mönster kan inkludera undantag (inte att förväxla med undantag som representerar fel som uppstår under programkörning). Undantag lägger till eller tar bort förekomstdatum i det ursprungliga mönstret. Undantag kan specificeras som explicita förekomster eller som ett eget mönster. Exempel på återkommande mönster med undantag:

  • Varannan fredag, förutom från juni till augusti.
  • Den 1:a varje månad, förutom i januari, då den ska vara den 2:a.

Återkommande mönster är oftast periodiska, men det är inte ett krav. Ett återkommande mönster kan beskrivas helt som en uppsättning fördefinierade datum- och tidsinstanser. iCalendar‑RFC:n definierar komponenter, såsom VEVENT eller VTODO, som representerar händelser eller uppgifter. Komponenterna kan ha egenskaper som startdatum/tid, beskrivning, plats, deltagare och återkomst. Ett återkommande mönster finns därför normalt som en egenskap hos en återkommande uppgift eller en händelse. Återkommande mönsteregenskaper som definieras av iCalendar är:

  • DTSTART – startdatum och starttid för mönstret (representerar också den första förekomsten om den inte uttryckligen exkluderas).
  • RRULE – specificerar en upprepande regel för en återkommande uppsättning.
  • RDATE – definierar en lista med datum och tider att inkludera i en återkommande uppsättning.
  • EXRULE – specificerar en upprepande regel för undantag från en återkommande uppsättning.
  • EXDATE – definierar en lista med datum‑ och tidsundantag från en återkommande uppsättning.

Endast DTSTART är obligatoriskt och det får endast finnas ett DTSTART. Alla andra egenskaper är valfria och kan anges mer än en gång. Aspose.iCalendar tar en sträng i iCalendar‑format och läser in återkomstmönstret i ett RecurrencePattern objekt. Strängen kan vara en fullständig beskrivning av en iCalendar‑komponent (t.ex. ett komplett VEVENT) eller bara ett fragment som endast innehåller återkomstmönstret. När återkomstmönstret har laddats in i ett RecurrencePattern‑objekt kan du:

  • Undersök och modifiera mönstret programatiskt via metoder och egenskaper som tillhandahålls av Aspose.iCalendar
  • Generera förekomstdatum/tider inom ett specificerat datumintervall.
  • Spara mönstret i iCalendar‑format.

Följande kodsnutt visar att RRULE‑delen innehåller återkommanderegeln.

Titta på exempel på återkommande mönster för illustrationer av hur man skapar återkommande mönster.

Om Aspose.iCalendar‑objektmodellen

Namnområdet Aspose.iCalendar innehåller alla klasser som tillhandahålls av Aspose.iCalendar‑komponenten. RecurrencePattern och RecurrenceRule är de centrala klasserna i Aspose.iCalendar och erbjuder konkreta implementationer av de motsvarande RFC‑2445‑elementen.

Klassen RecurrencePattern representerar hela återkommande mönstret. Du kan skapa ett nytt återkommande mönster från grunden med standardkonstruktorn eller läsa in ett befintligt mönster i iCalendar‑format med den statiska metoden FromiCalendar. Klassen RecurrenceRule representerar RRULE‑ eller EXRULE‑delen av ett återkommande mönster. RecurrenceRule exponerar ett antal egenskaper som direkt motsvarar sina motsvarigheter i iCalendar‑standarden. Till exempel mappar ByMonth till BYMONTH i iCalendar osv. Genom att undersöka eller sätta värden på RecurrenceRule‑egenskaperna kan du analysera eller ändra en återkommanderegel. För mer information och kodexempel, se RecurrencePattern och RecurrenceRule i API‑referensen.

Exempel på mönster

Detta avsnitt innehåller följande ämnen:

  • Den sista dagen i månaden.
  • Den sista arbetsdagen varje månad.
  • Den sista måndagen på året.
  • Fredagen i den första ISO‑8601‑veckan på året.
  • Första fredagen på året.

Den sista dagen i månaden

Detta exempel återkommande mönster anger den sista dagen i månaden, varje månad.

RRULE:FREQ=MONTHLY;BYMONTHDAY=-1

På samma sätt, om du vill ha en förekomst på en dag före den sista dagen i månaden, använd BYMONTHDAY=-2. Om du anger BYMONTHDAY=31 så kommer, enligt iCalendar‑standarden, ingen förekomst att genereras i månader som har färre än 31 dagar.

Den sista arbetsdagen varje månad

Detta exempel återkommande mönster anger den sista arbetsdagen i månaden, varje månad. Arbetsdagar definieras som de dagar du arbetar. I Europa är arbetsdagar normalt måndag till fredag.

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

Regeln ovan specificerar alla arbetsdagar i en månad och väljer den sista av dem. Resultatet blir den sista arbetsdagen i en månad.

Den sista måndagen på året

Detta exempel återkommande mönster anger ett evenemang som inträffar på årets sista måndag.

RRULE:FREQ=YEARLY;BYDAY=-1MO

Fredagen i den första ISO‑8601‑veckan på året

Detta exempel återkommande mönster anger fredagen i den första veckan på året. I ISO‑8601‑specifikationen är den första veckan på året den vecka som har minst fyra dagar. När ett år startar på en lördag, till exempel, är vecka 1 veckan som följer omedelbart, med start på måndag 3 januari.

FREQ=YEARLY;BYWEEKNO=1;BYDAY=FR

Första fredagen på året

Detta exempel återkommande mönster anger ett evenemang som inträffar på årets första fredag.

FREQ=YEARLY;BYDAY=1FR

År 1999, till exempel, är årets första fredag 1999/01/01, medan fredagen i den första ISO‑8601‑veckan är 1999/01/08.