再発パターンの紹介

recurrence pattern(繰り返しパターン)を特定のスケジュールを記述する方法と考えることができます。これは、与えられたスケジュールに従って発生日時(日付と時刻)のリストを構築するために十分な情報だけを含みます。繰り返しパターンは、全体のパターンを構成するサイクルを記述する繰り返し規則を含むことがあります。一般に、繰り返しパターンが複雑になるほど、含まれる繰り返し規則の数も増えます。繰り返しパターンは exceptions(例外)を含めることができます(アプリケーション実行中に発生するエラーを表す例外とは混同しないでください)。例外は元のパターンに対して発生日付を追加または削除します。例外は明示的な発生として、またはそれ自体がパターンとして指定できます。例外を含む繰り返しパターンの例:

  • 6月から8月を除く、毎月第2金曜日。
  • 1月を除く毎月の1日。ただし、1月は2日に設定すべきです。

繰り返しパターンはほとんどの場合周期的ですが、必ずしもそうである必要はありません。繰り返しパターンは、事前に定義された発生日時のセットとして完全に記述できます。iCalendar RFC は、イベントやタスクを表す components(たとえば VEVENT や VTODO)を定義しています。コンポーネントは、開始日時、説明、場所、出席者、繰り返しなどのプロパティを持つことができます。したがって、繰り返しパターンは通常、繰り返しタスクまたはイベントのプロパティとして存在します。iCalendar によって定義された繰り返しパターンのプロパティは以下の通りです:

  • DTSTART - パターンの開始日付と時刻(明示的に除外されていない場合は最初の発生も表します)。
  • RRULE - 再発セットに対する繰り返し規則を指定します。
  • RDATE - 再発セットに含める日付と時刻のリストを定義します。
  • EXRULE - 再発セットからの除外に対する繰り返し規則を指定します。
  • EXDATE - 再発セットから除外する日付と時刻のリストを定義します。

必須なのは DTSTART だけで、 DTSTART は1つだけでなければなりません。他のすべてのプロパティは任意で、複数回指定することもできます。Aspose.iCalendar は iCalendar 形式の文字列を受け取り、再発パターンをオブジェクトに読み込みます。 RecurrencePattern オブジェクトです。文字列は iCalendar コンポーネント(例: 完全な VEVENT)の全体説明でも、再発パターンだけを含む断片でも構いません。再発パターンが RecurrencePattern オブジェクトにロードされると、次のことができます:

  • Aspose.iCalendar が提供するメソッドとプロパティを使用して、パターンをプログラムで検査・変更する
  • 指定された期間内で発生日時を生成する。
  • パターンを 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 週の金曜日

このサンプル 繰り返しパターン 年の第1週の金曜日を指定します。ISO 8601 仕様では、年の第1週は少なくとも4日を含む週と定義されています。たとえば、年が土曜日に始まる場合、第1週はその直後の月曜日(1月3日)から始まる週です。

FREQ=YEARLY;BYWEEKNO=1;BYDAY=FR

年の最初の金曜日

このサンプル 繰り返しパターン 年の第1金曜日に発生するイベントを指定します。

FREQ=YEARLY;BYDAY=1FR

例えば1999年の場合、年の第1金曜日は1999/01/01ですが、ISO 8601 第1週の金曜日は1999/01/08です。