1万年問題

1万年問題

[11] 1万年問題は、4桁以下を扱うシステムにおいて、 10000年以上日時を扱えないという問題です。

[12] 2桁でを扱うシステムに関する2000年問題のついでに注目され、 一部で対策が行われましたが、完全解決には至っていません。

[19] はるか先の日付であり、将来の日時として取り扱うことすらほとんどないため、 あまり真剣には取り組まれていません。

対処済みの日時形式

[6] ISO 8601 は、 (4桁の構文の自然な拡張ではない) 展開表現により1万年問題に対処しています。

[7] xs:dateTime展開表現ではなく既存の構文の自然な拡張によって1万年問題に対処しています。 (意図的かどうかは書かれていませんが) ISO 8601 に違反しますが、 XML SchemaISO 8601規定ではなく参考として参照しているので、 構わないと考えているのでしょう。

[8] ISO 8601 から派生した独自の構文であるHTMLの日時形式は、 展開表現ではなく既存の構文の自然な拡張によって1万年問題に対処しています。

RFC 2550 の日時形式

[5] 出版された RFC 2550 は、インターネットにおける1万年問題を扱っており、 1万年問題を解決したRFC 2550の日時形式を定義しています。

[13] 単にの桁数を増やすだけでなく、 ASCII 順での整列日時整列となることを重視しています。

[14] 紀元前にも対応しています。

[15] のみならず、まで、まで、まで、 まで、まで、任意の桁数の秒の小数部までと任意の精度の日時を表現できます。 粗い日時と細かい日時が混在する場合の整列は、 ASCII文字列整列と同様に、粗い日時が細かい日時の最初の瞬間の前に来ます。

[16] 区切りの記号を使わず、秒の小数部以外は固定の桁数の ASCII数字列となっています。どの部分も最大値の規定はなく、 実在する日時の最大値を超えた時は、次の存在する日時の直前の瞬間を表すことになっています。 (例えば A999991232 (12月32日) は B100000 の前の瞬間を表しています。)


[17] に発行された RFC であり、 検討するのも野暮な話かもしれませんが、 現実的にはあまり使い勝手の良い日時形式ではないかもしれません。

[18] 文字列としての整列を重視する余り、可読性を著しく落としていますし、 1万年以上で使われる英字や記号は人間が扱うには難しすぎる (ミスする可能性が高い) ものです。 整数時刻系などの完全に機械処理向けの日時形式を使わず、 人間向けのの構造を残した日時形式を敢えて採用する場面では、 こうした欠点は致命的です。

未対応の日時形式

[10] RFC 3339の日時形式は4桁固定で、1万年問題未対応です。

関連

[9] 将来の日時も参照。

メモ

[1] 西暦10000年問題 - Wikipedia (2007-01-10 09:55:23 +09:00 版) <http://ja.wikipedia.org/wiki/%E8%A5%BF%E6%9A%A610000%E5%B9%B4%E5%95%8F%E9%A1%8C> (名無しさん)

[2] Year 10,000 problem - Wikipedia, the free encyclopedia (2007-01-17 09:39:58 +09:00 版) <http://en.wikipedia.org/wiki/Year_10%2C000_problem> (名無しさん)

[3] 一万年問題のポイントの1つは、そんな先のことまで考えずとも、 もっと若い年号すらまともに扱えない (のがほとんどである) ことではありますまいか。

[20] 9340年問題 ‐ 通信用語の基礎知識 () <http://www.wdic.org/w/TECH/9340%E5%B9%B4%E5%95%8F%E9%A1%8C>