반복 패턴 소개

recurrence pattern을 특정 일정 을 설명하는 방법이라고 생각할 수 있습니다. 이는 주어진 일정에 따라 발생(날짜와 시간) 목록을 만들기에 충분한 정보를 포함합니다. 반복 패턴에는 전체 패턴을 형성하기 위해 결합되는 주기를 설명하는 반복 규칙이 포함될 수 있습니다. 일반적으로 반복 패턴이 복잡할수록 더 많은 반복 규칙을 포함합니다. 반복 패턴은 exceptions를 포함할 수 있습니다(응용 프로그램 실행 중 발생하는 오류를 나타내는 예외와 혼동하지 마세요). 예외는 원래 패턴에 발생 날짜를 추가하거나 제거합니다. 예외는 명시적인 발생으로 지정하거나 자체 패턴으로 지정할 수 있습니다. 예외가 포함된 반복 패턴의 예시:

  • 6월부터 8월까지를 제외하고 매 두 번째 금요일마다.
  • 1월을 제외한 매월 1일, 단 1월은 2일이어야 합니다.

반복 패턴은 대부분 주기적이지만 반드시 그렇지는 않습니다. 반복 패턴은 미리 정의된 발생 날짜와 시간 집합으로 완전히 설명될 수 있습니다. iCalendar RFC는 이벤트 또는 작업을 나타내는 VEVENT 또는 VTODO와 같은 components를 정의합니다. 이러한 컴포넌트는 시작 날짜/시간, 설명, 위치, 참석자 및 반복과 같은 속성을 가질 수 있습니다. 따라서 반복 패턴은 일반적으로 반복 작업이나 이벤트의 속성으로 존재합니다. iCalendar에서 정의된 반복 패턴 속성은 다음과 같습니다:

  • DTSTART - 패턴의 시작 날짜 및 시간(명시적으로 제외되지 않은 경우 첫 번째 발생을 나타냅니다).
  • RRULE - 반복 세트에 대한 반복 규칙을 지정합니다.
  • RDATE - 반복 세트에 포함할 날짜와 시간 목록을 정의합니다.
  • EXRULE - 반복 세트에서 예외에 대한 반복 규칙을 지정합니다.
  • EXDATE - 반복 세트에서 제외할 날짜와 시간 목록을 정의합니다.

DTSTART만 필수이며 하나만 존재해야 합니다. 다른 모든 속성은 선택 사항이며 여러 번 지정할 수 있습니다. Aspose.iCalendar는 iCalendar 형식의 문자열을 받아 반복 패턴을 읽어들입니다. RecurrencePattern 객체. 문자열은 iCalendar 구성 요소에 대한 전체 설명(예: 완전한 VEVENT)일 수도 있고, 반복 패턴만 포함하는 조각일 수도 있습니다. 반복 패턴을 RecurrencePattern 객체에 로드하면 다음을 수행할 수 있습니다:

  • Aspose.iCalendar가 제공하는 메서드와 속성을 통해 패턴을 프로그램matically 검사하고 수정합니다.
  • 지정된 날짜 범위에서 발생 날짜/시간을 생성합니다.
  • 패턴을 iCalendar 형식으로 저장합니다.

다음 코드 스니펫은 RRULE 부분에 반복 규칙이 포함되어 있음을 보여줍니다.

다음을 보세요 샘플 반복 패턴 반복 패턴을 만드는 방법에 대한 예시.

Aspose.iCalendar 객체 모델 소개

Aspose.iCalendar 네임스페이스에는 Aspose.iCalendar 구성 요소가 제공하는 모든 클래스가 들어 있습니다. RecurrencePattern과 RecurrenceRule은 Aspose.iCalendar의 핵심 클래스이며, 해당 RFC 2445 요소에 대한 구체적인 구현을 제공합니다.

RecurrencePattern 클래스는 전체 반복 패턴을 나타냅니다. 기본 생성자를 사용해 새 반복 패턴을 처음부터 만들거나, 정적 FromiCalendar 메서드를 사용해 iCalendar 형식의 기존 패턴을 로드할 수 있습니다. RecurrenceRule 클래스는 반복 패턴의 RRULE 또는 EXRULE 부분을 나타냅니다. RecurrenceRule은 iCalendar 표준의 대응 항목에 직접 매핑되는 여러 속성을 제공합니다. 예를 들어, ByMonth는 iCalendar의 BYMONTH에 대응합니다. RecurrenceRule 속성의 값을 검사하거나 설정함으로써 반복 규칙을 분석하거나 수정할 수 있습니다. 자세한 정보와 코드 샘플은 API 레퍼런스의 RecurrencePattern 및 RecurrenceRule 섹션을 참조하세요.

샘플 패턴

이 섹션에는 다음 주제가 포함됩니다:

  • 월의 마지막 날.
  • 매월 마지막 근무일.
  • 연도 마지막 월요일.
  • 연도 첫 ISO 8601 주의 금요일.
  • 연도 첫 금요일.

월의 마지막 날

이 샘플들 반복 패턴 매월 해당 월의 마지막 날을 지정합니다.

RRULE:FREQ=MONTHLY;BYMONTHDAY=-1

마찬가지로, 월의 마지막 전날에 발생하도록 하려면 BYMONTHDAY=-2를 사용합니다. BYMONTHDAY=31을 지정하면 iCalendar 표준에 따라 31일보다 적은 달에서는 발생이 생성되지 않습니다.

매월 마지막 근무일

이 샘플들 반복 패턴 매월 해당 월의 마지막 근무일을 지정합니다. 근무일은 작업을 하는 날을 의미합니다. 예를 들어 유럽에서는 일반적으로 월요일부터 금요일까지가 근무일입니다.

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

위 규칙은 해당 월의 모든 근무일을 지정하고 그 중 마지막을 선택합니다. 결과적으로 해당 월의 마지막 근무일이 됩니다.

연도 마지막 월요일

이 샘플 반복 패턴 연도의 마지막 월요일에 발생하는 이벤트를 지정합니다.

RRULE:FREQ=YEARLY;BYDAY=-1MO

연도 첫 ISO 8601 주의 금요일

이 샘플 반복 패턴 연도의 첫 주에 해당하는 금요일을 지정합니다. ISO 8601 규격에서 연도의 첫 주는 최소 4일이 포함된 주를 의미합니다. 예를 들어 연도가 토요일에 시작하면, 첫 주는 그 다음 주이며, 1월 3일 월요일부터 시작합니다.

FREQ=YEARLY;BYWEEKNO=1;BYDAY=FR

연도 첫 금요일

이 샘플 반복 패턴 연도의 첫 금요일에 발생하는 이벤트를 지정합니다.

FREQ=YEARLY;BYDAY=1FR

예를 들어 1999년에는 연도의 첫 금요일이 1999/01/01이며, 첫 ISO 8601 주의 금요일은 1999/01/08입니다.