parse a time-zone offset string

HTML における時間帯表記

[28] 時差 (time-zone offset) は、によって構成される符号つきです >>8

[108] 大域日時日付や時刻には時間帯 (timezone) の情報を含めることができます。

仕様書

構文定義

[109] 妥当な時差文字列 (valid time-zone offset string) とは、

... か、または
  1. [111] 符号 + または -
  2. [112] を表すASCII数字2桁
  3. [113] :
  4. [114] を表すASCII数字2桁
... のいずれかの文字列です。ただしここで >>111>>112>>114時差符号をそれぞれ表しており、 >>112 は 0〜23、 >>114 は 0〜59 の範囲でなければなりません。 また、時差が0のときは、 >>111- でなければなりません。 >>8

vCard マイクロデータにおける時間帯

[139] vCard マイクロデータにおいては、次のように時間帯の値の構文が定義されています >>138

  1. [140] + または -
  2. [141] ASCII数字2桁
  3. [142] :
  4. [143] ASCII数字2桁

[144] >>141 は00~23、 >>143 は 00~59 でなければなりません >>138

[145] HTML時差 (>>109) と比較すると、 -00:00 が認められていることと、 Z が認められていないことが異なっています。

[146] HTML に埋め込まれているとはいえ、 HTML の一部としてではなく、 vCard として処理されるので、 vCard 寄りの構文になっているものと思われます。

構文解析

[29] 時差文字列の構文解析 (parse a time-zone offset string) 時差部品の構文解析 (parse a time-zone offset component) (旧・時間帯部品の構文解析 (parse a timezone component) ) は、次のような処理をいいます >>8

  1. 次の文字大文字の「Z」 であれば、 として 0、として 0 を返して終わる
  2. 文字列正規表現 ([+-]2数字):(2数字) または ([+-]2数字)(2数字)一致しない場合、 何も返さずに終わる
  3. $1 を十進数として解釈したものをとする
  4. $2 を十進数として解釈したものをとする
  5. が -23〜23 でない場合、何も返さない
  6. が 0〜59 でない場合、何も返さない
  7. を返す

[148] これは >>109 のために規定されたものですが、 >>139 にも適用できます。

[6] この解釈の方法は、構文が満たすべき条件よりも緩くなっています。 具体的には、

[9] >>8RFC 822の日時形式など他の日時形式でも一般的に用いられている形式との互換性のためと思われます。

過去の時間帯

[136] 歴史的な日時における時間帯の意味については、先発グレゴリオ暦の項を参照。

文脈

[135] 時差 (>>109) は、 time 要素で使われます。

[134] 時差 (>>109) は、妥当な大域日時文字列妥当な日付文字列と省略可能な時刻で使われます。

[147] >>139 は、 vCard マイクロデータtz の値として使われます。

関連

[30] RFC 3339の日付形式などでは -00:00時間帯不明という意味が与えられていますが、 HTML時差 (>>109) では禁止されています。 >>139 では禁止されていません。

[1] [] (0) Move pubdate= from <article> to <time>.]] (Hixie著, ) <https://github.com/whatwg/html/commit/aeed8c2ba559b0bb22f894f7ab061c30959c7e9a>

[2] 8028 – If the first character is not Z or + or -, the subalgorithm returns undefined values. It should explicitly fail and return nothing. () <https://www.w3.org/Bugs/Public/show_bug.cgi?id=8028>

[3] [giowt] (0) Make the 'parse a time-zone offset component' rules handl… (Hixie著, ) <https://github.com/whatwg/html/commit/9b9d174af37d384053073e41e80f443c257336a1>

[4] [ac] (1) disallow -00:00 in a global date and time string (Hixie著, ) <https://github.com/whatwg/html/commit/0de3e20f218fb39c9ff649dfb2c33f9dc9f08ba7>

[5] [aco] (2) Define 'local date and time', 'date', 'time', and redefine … (Hixie著, ) <https://github.com/whatwg/html/commit/e0a11970f9ae3dc66a07a3189f5902d7650f086a>