Wprowadzenie do wzorców powtarzania

Możesz myśleć o wzorcu powtarzalności jako o sposobie opisania konkretnego harmonogramu. Zawiera on wystarczająco dużo informacji, aby zbudować listę wystąpień (dat i godzin) zgodnie z danym harmonogramem. Wzorzec powtarzalności może zawierać reguły powtarzalności, które opisują cykle łączące się w całościowy wzorzec. Generalnie, im bardziej złożony jest wzorzec powtarzalności, tym więcej reguł powtarzalności będzie zawierał. Wzorce powtarzalności mogą obejmować wyjątki (nie mylić z wyjątkami oznaczającymi błędy podczas wykonywania aplikacji). Wyjątki dodają lub usuwają daty wystąpień z oryginalnego wzorca. Wyjątki mogą być określone jako explicite wystąpienia lub jako własny wzorzec. Przykłady wzorców powtarzalności z wyjątkami:

  • Co drugi piątek, z wyjątkiem od czerwca do sierpnia.
  • Pierwszy dzień każdego miesiąca, z wyjątkiem stycznia, kiedy powinien być 2.

Wzorce powtarzalności są najczęściej okresowe, ale nie muszą tak być. Wzorzec powtarzalności może być w pełni opisany jako zbiór z góry określonych dat i godzin wystąpień. RFC iCalendar definiuje komponenty, takie jak VEVENT lub VTODO, które reprezentują wydarzenia lub zadania. Komponenty mogą mieć właściwości takie jak data i godzina rozpoczęcia, opis, lokalizacja, uczestnicy oraz powtarzalność. Wzorzec powtarzalności istnieje więc zazwyczaj jako właściwość zadania lub wydarzenia cyklicznego. Właściwości wzorca powtarzalności zdefiniowane przez iCalendar to:

  • DTSTART – data i czas rozpoczęcia wzorca (reprezentuje także pierwsze wystąpienie, jeśli nie jest wyłączone explicite).
  • RRULE – określa regułę powtarzania dla zestawu powtórzeń.
  • RDATE – definiuje listę dat i czasów, które mają być włączone do zestawu powtórzeń.
  • EXRULE – określa regułę powtarzania dla wyjątków z zestawu powtórzeń.
  • EXDATE – definiuje listę wyjątków dat i czasów z zestawu powtórzeń.

Tylko DTSTART jest wymagany i musi wystąpić tylko raz. Wszystkie inne właściwości są opcjonalne i mogą być określone wielokrotnie. Aspose.iCalendar przyjmuje ciąg w formacie iCalendar i odczytuje z niego wzorzec powtarzania do RecurrencePattern obiekt. Ciąg może być pełnym opisem komponentu iCalendar (na przykład pełnym VEVENT) lub może być tylko fragmentem zawierającym jedynie wzorzec powtarzania. Po załadowaniu wzorca powtarzania do obiektu RecurrencePattern możesz:

  • Zbadaj i modyfikuj wzorzec programowo za pomocą metod i właściwości udostępnionych przez Aspose.iCalendar
  • Wygeneruj daty/godziny wystąpień w określonym przedziale czasowym.
  • Zapisz wzorzec w formacie iCalendar.

Poniższy fragment kodu pokazuje, że część RRULE zawiera regułę powtarzania.

Spójrz na przykładowe wzorce powtarzalności dla ilustracji, jak tworzyć wzorce powtarzalności.

O modelu obiektowym Aspose.iCalendar

Przestrzeń nazw Aspose.iCalendar zawiera wszystkie klasy dostarczane przez komponent Aspose.iCalendar. RecurrencePattern i RecurrenceRule są centralnymi klasami Aspose.iCalendar i zapewniają konkretne implementacje odpowiadających elementów RFC 2445.

Klasa RecurrencePattern reprezentuje cały wzorzec powtarzalności. Możesz utworzyć nowy wzorzec powtarzalności od podstaw, używając domyślnego konstruktora, lub wczytać istniejący wzorzec w formacie iCalendar, korzystając ze statycznej metody FromiCalendar. Klasa RecurrenceRule reprezentuje część RRULE lub EXRULE wzorca powtarzalności. RecurrenceRule udostępnia szereg właściwości, które bezpośrednio odpowiadają ich odpowiednikom w standardzie iCalendar. Na przykład, ByMonth mapuje na BYMONTH w iCalendar itp. Analizując lub ustawiając wartości właściwości RecurrenceRule, możesz analizować lub modyfikować regułę powtarzalności. Aby uzyskać więcej informacji i przykłady kodu, zobacz RecurrencePattern i RecurrenceRule w dokumentacji API.

Przykładowe wzorce

Ta sekcja zawiera następujące tematy:

  • Ostatni dzień miesiąca.
  • Ostatni dzień roboczy każdego miesiąca.
  • Ostatni poniedziałek roku.
  • Piątek pierwszego tygodnia ISO 8601 roku.
  • Pierwszy piątek roku.

Ostatni dzień miesiąca

Te przykłady wzorzec powtarzalności określa ostatni dzień miesiąca, każdego miesiąca.

RRULE:FREQ=MONTHLY;BYMONTHDAY=-1

Podobnie, jeśli chcesz wystąpienie w dniu przed ostatnim dniem miesiąca, użyj BYMONTHDAY=-2. Jeśli określisz BYMONTHDAY=31, to zgodnie ze standardem iCalendar nie zostanie wygenerowane żadne wystąpienie w miesiącach, które mają mniej niż 31 dni.

Ostatni dzień roboczy każdego miesiąca

Te przykłady wzorzec powtarzalności określa ostatni dzień roboczy miesiąca, każdego miesiąca. Dni robocze definiuje się jako dni, w które pracujesz. W Europie, na przykład, dni robocze to zazwyczaj od poniedziałku do piątku.

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

Powyższa reguła określa wszystkie dni robocze miesiąca i wybiera z nich ostatni. Wynikiem jest ostatni dzień roboczy w miesiącu.

Ostatni poniedziałek roku

Ten przykład wzorzec powtarzalności określa zdarzenie, które występuje w ostatni poniedziałek roku.

RRULE:FREQ=YEARLY;BYDAY=-1MO

Piątek pierwszego tygodnia ISO 8601 roku

Ten przykład wzorzec powtarzalności określa piątek pierwszego tygodnia roku. Zgodnie ze specyfikacją ISO 8601, pierwszy tydzień roku to tydzień zawierający przynajmniej cztery dni. Gdy rok zaczyna się w sobotę, na przykład, tydzień 1 jest tygodniem następującym od razu, rozpoczynającym się w poniedziałek, 3 stycznia.

FREQ=YEARLY;BYWEEKNO=1;BYDAY=FR

Pierwszy piątek roku

Ten przykład wzorzec powtarzalności określa zdarzenie, które występuje pierwszego piątku roku.

FREQ=YEARLY;BYDAY=1FR

Na przykład w 1999 roku, pierwszy piątek roku to 1999/01/01, podczas gdy piątek pierwszego tygodnia ISO 8601 to 1999/01/08.