Personal tools
You are here: Home ブログ 井上 iCalendar(rfc2445)で終日の予定のDTENDの正しい仕様は?
« December 2010 »
Su Mo Tu We Th Fr Sa
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
Recent entries
Apache2.4のリリース予定は来年(2011年)初め(あくまで予定) inoue 2010-12-23
Herokuの発音 inoue 2010-12-20
雑誌記事「ソフトウェア・テストPRESS Vol.9」の原稿公開 inoue 2010-12-18
IPA未踏のニュース inoue 2010-12-15
労基法とチキンゲーム inoue 2010-12-06
フロントエンドエンジニア inoue 2010-12-03
ASCII.technologies誌にMapReduceの記事を書きました inoue 2010-11-25
技術評論社パーフェクトシリーズ絶賛発売中 inoue 2010-11-24
雑誌連載「Emacsのトラノマキ」の原稿(part8)公開 inoue 2010-11-22
RESTの当惑 inoue 2010-11-22
「プログラマのためのUXチートシート」を作りました inoue 2010-11-19
「ビューティフルコード」を読みました inoue 2010-11-16
Categories
カテゴリなし
 
Document Actions

iCalendar(rfc2445)で終日の予定のDTENDの正しい仕様は?

AirOneのスケジュール文書の内部フォーマットは、iCal(rfc2445)のXML版のxCalです。基本的なsemanticsは同じです。

Google Calendarのスケジュール文書のフォーマットは、ATOMベースのGData(XML)ですが、基本的なsemanticsはiCalに従っています。

両者の終日の予定の表現に違いがあります。

AirOneで2006/11/7の終日の予定を作ると次のようになります。

  • DTSTART: 2006-11-07
  • DTEND: 2006-11-07

Google Calendarで同じ終日の予定を作ると次のようになります。

  • DTSTART: 2006-11-07
  • DTEND: 2006-11-08

どちらが正しいのでしょう。

rfc2445で該当するのは次の箇所だと思います。

The "VEVENT" is also the calendar component used to specify an anniversary or daily reminder within a calendar. These events have a DATE value type for the "DTSTART" property instead of the default data type of DATE-TIME. If such a "VEVENT" has a "DTEND" property, it MUST be specified as a DATE value also. The anniversary type of "VEVENT" can span more than one date (i.e, "DTEND" property value is set to a calendar date after the "DTSTART" property value).

終日の予定の場合、DTSTARTもDTENDも、値は時刻を持たずに日付だけにしろ、で、この部分は明確です。問題は、次に続く説明です。

The "DTSTART" property for a "VEVENT" specifies the inclusive start of the event. For recurring events, it also specifies the very first instance in the recurrence set. The "DTEND" property for a "VEVENT" calendar component specifies the non-inclusive end of the event.

"inclusive"と"non-inclusive"の解釈です。まず注意すべきは、ここは終日の予定に限定した説明ではありません。DTSTARTとDTENDが時刻まで含んだ値だとすれば、常識的な解釈です。9:00から10:00までの予定と、10:00から11:00までの予定があれば、普通は、予定の重複とは見なしません。10:00を示す「点」がどちらに含まれるかと言えば、常識的には後者(10:00から11:00までの予定)に含まれると考えます。

これを素直に日付に拡張すると、...Googleの解釈の方が正しい? アリエル負けた?

The URL to Trackback this entry is:
http://dev.ariel-networks.com/Members/inoue/icalendar-rfc2445/tbping

Re:iCalendar(rfc2445)で終日の予定のDTENDの正しい仕様は?

Posted by Anonymous User at 2006-11-22 12:00
人間の直感だと "DTEND: 2006-11-08" だと11/08の23:59:59までが予定で埋まっているように感じられます。
コードで素直に表現するなら、"DTEND: 2006-11-08" のほうが取り回しがラクそうですね。
直感とコードとどちらを優先するかになるんでしょうか。

Re:iCalendar(rfc2445)で終日の予定のDTENDの正しい仕様は?

Posted by Anonymous User at 2009-12-01 21:41
> 10:00を示す「点」がどちらに含まれるかと言えば、常識的には後者(10:00から11:00までの予定)に含まれると考えます。

「10:00まで」もそれを含むような気がしますが、時間だからでしょうか?
「A~Cまでで選べ」ならCは含まれるので・・・
常識的に後者なのでしょうか・・・
Add comment

You can add a comment by filling out the form below. Plain text formatting.

(Required)
(Required)
(Required)
This helps us prevent automated spamming.
Captcha Image


Copyright(C) 2001 - 2006 Ariel Networks, Inc. All rights reserved.