「The 1 character military time zones」について

知る人ぞ知る、なのかもしれんが、ワタシは知らなかった。

RFC2822の解釈に苦しんだ:

The 1 character military time zones were defined in a non-standard
way in [RFC822] and are therefore unpredictable in their meaning.
The original definitions of the military zones “A” through “I” are
equivalent to “+0100″ through “+0900″ respectively; “K”, “L”, and “M”
are equivalent to “+1000″, “+1100″, and “+1200″ respectively; “N”
through “Y” are equivalent to “-0100″ through “-1200″ respectively;
and “Z” is equivalent to “+0000″. However, because of the error in
[RFC822], they SHOULD all be considered equivalent to “-0000″ unless
there is out-of-band information confirming their meaning.

最初の

The 1 character military time zones were defined in a non-standard
way in [RFC822] and are therefore unpredictable in their meaning.

なんだけれども、ここ、「一文字の軍用タイムゾーンは [RFC822] において非標準の方法で定義された上に誤りを含んでいたため、現在ではその意味は予測できない。」として欲しかった。RFC822 まで実際に読んでやっとわかった。実際のところ、定義が非標準だったことが直接の理由で予測できなくなったわけではないわ。

RFC822 の「the error」部分はまさにこう:

             /  1ALPHA                       ; Military: Z = UT;
                                             ;  A:-1; (J not used)
                                             ;  M:-12; N:+1; Y:+12

つまり RFC2822 が言っているのは、「軍用に定義されたのは本来は A~I で +1~+9 を、J は未使用で、K~M で +10~+12、N~Y で -1~-12、Z が +0、であったが、RFC822 がご覧の通り(*)誤ってしまったがために(*)、この誤りに従ったものもあるかもしれないしそうでないものもあるかもしれない、今となっては覆水盆に還らずである」ということ。

ちょっとだけ疲れた。些細だけど。

にしても「Z」が ISO8601 で普通に使われるからあんまり一文字タイムゾーンについて真面目に考えたことなかったけど、言われてみれば一度も「Z以外の一文字タイムゾーン」、見たことないかも。