iCalendarの仕様のうち、LiliesNoteで使用したものを抜粋する。
iCalendar形式は、カレンダーのイベントを表示、共有するためのフォーマット。 RFC5545にて定義されている。
iCalendarファイルの拡張子は.ics
。MIMEタイプはtext/calendar
で、規定の文字コードはUTF-8
。
改行はCR+LF
、一行は改行を除き75オクテット以内。
75オクテットを超える行に関しては、畳み込みを行う。
文字列を分割し、その文字列を改行し、先頭に半角スペースを入れる。
(しかし、最近のクライアントは一行が75オクテット以上でも正常に読み込みを行う。iOS/AndroidのカレンダーApp、Windowsのカレンダーにて確認。)
畳み込み処理を行う都合上、行の先頭に空白を入れてはいけない。
日付はYYYYMMDD
、時刻はHHMMSS
で記載する。繋げる場合はT
で繋ぐ。
全てのコンポーネントはBEGIN:コンポーネント名
で始まり、END:コンポーネント名
で終わる。
プロパティはプロパティ名:値
のように記述する。
定義されていないプロパティは処理系によって無視される。これを利用してコメントを入れることも可能。
カレンダーコンポーネント。識別情報、タイムゾーンの定義や、イベントを入れるコンポーネント。
- PRODID : 必須。識別情報を定義する。FPIに沿った記法が推奨。
- CALSCALE : 暦の形式を指定する。
GREGORIAN
のみ指定できる? - VERSION : iCalendarファイルのバージョン。RFC5545では
2.0
が指定されている。
イベントコンポーネント。イベントの情報を入れる。
- DTSTART : イベントの開始時刻。
DTSTART;VALUE=DATE:日付
と記述すると、日付のみの指定ができる。 - DTEND : イベントの終了時刻。DTSTARTと同じように日付のみの指定が可能。終日のイベントにしたい場合、DTSTARTの1日後を指定すれば良い。
- RRULE : 繰り返しルール。毎年の繰り返しの場合、
RRULE;FREQ=YEARLY
と指定する。 - TRANSP : イベントの時間の状態。
OPAQUE
の場合には予定あり、TRANSPARENT
の場合には空き時間となる。 - UID : 全世界でユニークなID。RFC2445では、
RFC822の
addr-spec
(メールアドレスなどの形式)が推奨されていたが、 RFC5545ではUUIDの使用が推奨されている。 - DTSTAMP : イベントが作成された日時。
- SUMMARY : イベントの件名。
- DESCRIPTION : イベントの説明。
- URL : イベントのURL。
URL;VALUE=URI:
の形で指定する。
BEGIN:VCALENDAR
PRODID:-//Organization/Author//NONSGML Software//JA
CALSCALE:GREGORIAN
BEGIN:VEVENT
DTSTART;VALUE=DATE:20230619
DTEND;VALUE=DATE:20230620
DTSTAMP:20230510T150000
RRULE;FREQ=YEARLY
TRANSP:TRANSPARENT
SUMMARY:Hitotsuyanagi Riri's birthday
DESCRIPTION:It is the birthday of Hitotsuyanagi Riri, who belongs to LG Radgrid.
END:VEVENT
END:VCALENDAR