SSブログ

タイムゾーンコンポーネント(VTIMEZONE) [iCalendar]

さて、次は「VTIMEZONE」ですね。時間関係ですねぇ・・。また、大半が後回しになるかも・・。

それはさておき、このコンポーネントは「タイムゾーン」を定義するために使用されるコンポーネントです。定義は下記の通り。

timezonec  = "BEGIN" ":" "VTIMEZONE" CRLF
             *(
             ;
             ; ’tzid’ is REQUIRED, but MUST NOT occur more
             ; than once.
             ;
             tzid /
             ;
             ; ’last-mod’ and ’tzurl’ are OPTIONAL,
             ; but MUST NOT occur more than once.
             ;
             last-mod / tzurl /
             ;
             ; One of ’standardc’ or ’daylightc’ MUST occur
             ; and each MAY occur more than once.
             ;
             standardc / daylightc /
             ;
             ; The following are OPTIONAL,
             ; and MAY occur more than once.
             ;
             x-prop / iana-prop
             ;
                    )
                    "END" ":" "VTIMEZONE" CRLF
       standardc  = "BEGIN" ":" "STANDARD" CRLF
                    tzprop
                    "END" ":" "STANDARD" CRLF
       daylightc  = "BEGIN" ":" "DAYLIGHT" CRLF
                    tzprop
                    "END" ":" "DAYLIGHT" CRLF
       tzprop     = *(
                    ;
                    ; The following are REQUIRED,
                    ; but MUST NOT occur more than once.
                    ;
                    dtstart / tzoffsetto / tzoffsetfrom /
                    ;
                    ; The following is OPTIONAL,
                    ; but SHOULD NOT occur more than once.
                    ;
                    rrule /
                    ;
                    ; The following are OPTIONAL,
                    ; and MAY occur more than once.
                    ;
                    comment / rdate / tzname / x-prop / iana-prop
                    ;
                    )


定義を見る限り「VTIMEZONE」のコンポーネントは「STANDARD」コンポーネントと「DAYLIGHT」コンポーネントを中に含む形となる様です。それぞれのコンポーネントは少なくともいずれか一つは設定する必要があり、それぞれ複数存在してもいい様子です。

まず、プロパティ、コンポーネント(色つき背景)について、まとめておきます。

tzidM二つ以上は設定しない(MUST NOT)
last-modO二つ以上は設定しない(MUST NOT)
tzurlO二つ以上は設定しない(MUST NOT)
standardcM/O「standardc」「daylightc」のいずれかは必須(MUST)。二つ以上設定可(MAY)
daylightcM/O「standardc」「daylightc」のいずれかは必須(MUST)。二つ以上設定可(MAY)
x-propO二つ以上設定可(MAY)
iana-propO二つ以上設定可(MAY)


「STANDARD」「DAYLIGHT」コンポーネントの中身のプロパティは下記の通りです。

dtstartM二つ以上設定しない(MUST NOT)
tzoffsettoM二つ以上設定しない(MUST NOT)
tzoffsetfromM二つ以上設定しない(MUST NOT)
rruleO二つ以上設定すべきでない(SHOULD NOT)
commentO二つ以上設定可(MAY)
rdateO二つ以上設定可(MAY)
tznameO二つ以上設定可(MAY)
x-propO二つ以上設定可(MAY)
iana-propO二つ以上設定可(MAY)


タイムゾーンは、下記の様な各地で決められている時間に関するルールで明確に定義されています。

  • 標準時のUTCからのオフセット(多くの場合は1時間単位のオフセット)
  • サマータイム(Daylight Saving Time / Advanced Time / Summer Time / Legal Time)制による調整


この仕様ではタイムゾーンの登録情報については記載されていない様ですが、実装する際にはTZ databaseを参照すればいいとのこと。

「VTIMEZONE」カレンダーコンポーネントについて、その他いろいろ書かれていますが、概要は下記の通りだと思います。

  • 他のカレンダーコンポーネントにネストできない
  • 1つのカレンダーオブジェクトに複数存在できる
    →この場合、それぞれのコンポーネントは別々のタイムゾーンを定義すること(MUST)
  • 個々のコンポーネントはそれぞれ別々の「TZID」パラメータを定義する(MUST) ←上と同じこと?
  • 繰り返しのカレンダーコンポーネント(recurring calendar component)から参照される場合、全ての繰り返しに対して有効なタイムゾーンを提供すること(MUST) ←意味不明
  • 「STANDARD」サブコンポーネントは、標準時間(Standard time)について記述する
  • 「DAYLIGHT」サブコンポーネントは、サマータイム(Daylight Saving Time)について記述する
  • 「STANDARD」「DAYLIGHT」サブコンポーネントは次の要素から成る。
    • 式典(observance)の着手日時(the first onset DATE-TIME)
    • 分かる場合、式典(observance)の最終的な着手日時(the last onset DATE-TIME)
    • 式典の適用されるまでのオフセット(?)
    • 式典が有効になる日時を示すルール
    • 式典の名前(optional name)
    ここ、意味不明ですね・・。「onset」の意味も間違ってますかね・・・? 「offset」の反対語?


「observance(遵守事項?)」について、下記が書かれています。

  • それぞれのタイムゾーンに、一定の期間に守るべく独立した定義が複数ありえる
  • 「STANDARD」もしくは「DAYLIGHT」サブコンポーネントで記述される。
    →いくつかのサブコンポーネントで一定期間のタイムゾーンを記述する
  • もう一文の意味がよくわかりません・・・・・・(T_T)



なんか、よくわからないので、図示して欲しいですね・・。ちなみに、まだ後5ページ近くもあります・・。

長いので、つづく。

【参考】
What is an onset date? - YAHOO! ANSWERS







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

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