SSブログ

RECUR型 [iCalendar]

ずいぶんと飛びましたが、iCalendarの型についての続きです。前回はしょった、RECUR型について、ここでまとめておきます。

この型は、繰り返しのルールを記述するための型だとのことです。各ルールについて、あらためて表にまとめてみます。って、前回の表(と言うかそれ以前のも・・)は Windows 上では端が切れる場合がありますね・・。その場合、フォントを小さくすれば収まる様なので試してみてください。

なお、各ルールは次の規則で指定します。

  • 複数のルールを組み合わせて指定する
  • 個々のルールは「NAME=VALUE」の形で記載
  • 各ルールはSEMICOLON(0x3b)で区切る
  • ルールの記載は順不同
  • 「FREQ」は必須。それ以外はオプション。
  • 「UNTIL」と「COUNT」は同時使用不可(MUST NOT)
  • 全てのルールについて、記載は1度のみ(MUST)
  • 過去のアプリとの互換性のため「FREQ」はルールの先頭に記載する(MUST)


以下、各ルールについてざっと読んで行きます。

FREQ 必須。繰り返しのルールを指定する。必ず先頭に記載(MUST)。複数の指定は不可(MUST NOT)。
SECONDLY秒間隔の繰り返し
MINUTELY分間隔の繰り返し
HOURLY時間間隔の繰り返し
DAILY日にち感覚の繰り返し
WEEKLY週間隔の繰り返し
MONTHLY月間隔の繰り返し
YEARLY年間隔の繰り返し
UNTIL DATEもしくはDATE-TIME型で繰り返しの最終期日を指定。「DTSTART」プロパティと同じ型で指定(MUST)。「STANDARD」「DAYLIGHT」サブコンポーネントの場合、UTC timeで記載(MUST)。DATE-TIME型で指定した場合、UTC time formatで記載(MUST)。「COUNT」との同時使用は不可(MUST NOT)。「UNTIL」も「COUNT」も設定されていない場合、「RRULE」は永遠に繰り返されると考慮される(?)。
date
date-time
COUNT 発生回数を示す。「DTSTART」プロパティの値が最初の発生時点となる。
1*DIGIT
INTERVAL 正の整数で繰り返しの間隔を指定。デフォルト値は「1」。単位は「FREQ」に依存する。
1*DIGIT
BYSECOND 1分の中の秒をCOMMA(0x2c)で区切って記載したリスト。 「DTSTART」プロパティがDATE型の場合、この型は使用しない(MUST NOT)。 使用された場合は無視する(MUST)。
( 1*2DIGIT *("," 1*2DIGIT) ) ; 0-60
BYMINUTE 1時間の中の分をCOMMA(0x2c)で区切って記載したリスト。 「DTSTART」プロパティがDATE型の場合、この型は使用しない(MUST NOT)。 使用された場合は無視する(MUST)。
( 1*2DIGIT *("," 1*2DIGIT) ) ; 0-59
BYHOUR 1日の中の時をCOMMA(0x2c)で区切って記載したリスト。 「DTSTART」プロパティがDATE型の場合、この型は使用しない(MUST NOT)。 使用された場合は無視する(MUST)。
( 1*2DIGIT *("," 1*2DIGIT) ) ; 0-23
BYDAY 1週間の中の曜日をCOMMA(0x2c)で区切って記載したリスト。曜日の前に整数で修飾することで何番目の曜日かを指定することもできる。詳細は別途扱います。
( weekdaynum *("," weekdaynum) )
weekdaynum = [["+" / "-"] 1*2DIGIT] weekday ; 1-53
weekday = "SU" / "MO" / "TU" / "WE" / "TH" / "FR" / "SA"
SUSunday
MOMonday
TUTuesday
WEWednesday
THThursday
FRFriday
SASaturday
BYMONTHDAY 月内の日付をCOMMA(0x2c)で区切って指定。負の値は月末からカウントした日付を示す。例えば-10だと月末から前に10日目の日となる。FREQルールが「WEEKLY」の場合は本ルールは指定されない(MUST NOT)。
( monthdaynum *("," monthdaynum) )
monthdaynum = ["+" / "-"] 1*2DIGIT ; 1-31
BYYEARDAY 年内の日付をCOMMA(0x2c)で区切って指定。負の値は年末(12月31日)からの日付を示す。 例えば、-306は3月1日。「FREQ」ルールが「DAILY」「WEEKLY」「MONTHLY」に設定されている場合は本ルールは指定しない。
( yeardaynum *("," yeardaynum) )
yeardaynum = ["+" / "-"] 1*3DIGIT ; 1-366
BYWEEKNO 年内の週番号をCOMMA(0x2c)で区切って指定。週番号はISO.8601.2004に定義されている。「週」は7日周期で、週の始まりの曜日は「WKST」で指定する。「FREQ」が「YEARLY」以外の場合は使用しない(MUST NOT)。
["+" / "-"] 1*2DIGIT ; 1-53
BYMONTH 年内の月をCOMMA(0x2c)で区切って指定。
( = 1*2DIGIT *("," = 1*2DIGIT) ) ; 1-12
BYSETPOS 繰り返しのルールの中で、特定の位置を示す数をCOMMA(0x2c)で区切って指定する。負の値は最後からの相対位置となる。他の「BYxxx」ルールと一緒に使う(MUST)。

例えば、「月内の最終仕事日」は下記の様に示す。
FREQ=MONTHLY;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-1
( ["+" / "-"] 1*2DIGIT *("," ["+" / "-"] 1*2DIGIT) ) ; 1-366
WKST 週の開始日を指定。「RRULE」が1以上、「BYDAY」ルールが指定されている場合や、「RRULE」が「YEARLY」で「BYWEEKNO」ルールが記載されているに重要になる。デフォルト値は「MO」
"SU" / "MO" / "TU" / "WE" / "TH" / "FR" / "SA"


以上、「BYDAY」を除いて、各ルールの記載箇所をざっと読んで行きました。「BYDAY」は長かったので、次回扱おうと思います。おそらく、あらゆるパターンの繰り返しに対応するためだと思うのですが、結構複雑ですねぇ・・。最終的にちゃんとまとめないと何が、どうなってるのかさっぱりと言う感じですね。

ちなみに、頻繁に出てきた「RRULE」についても、今のところ不明です(私の中で・・)。



デル株式会社

nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

ブログを作る(無料) powered by SSブログ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。