[11] 西暦1万年問題は、4桁以下で年を扱うシステムにおいて、 10000年以上の日時を扱えないという桁溢れ問題です。
[12] 2桁で年を扱うシステムに関する西暦2000年問題のついでに注目され、 一部で対策が行われましたが、完全解決には至っていません。
[19] はるか先の日付であり、将来の日時として取り扱うことすらほとんどないため、 あまり真剣には取り組まれていません。
[6] ISO 8601 は、 (4桁の構文の自然な拡張ではない) 展開表現により1万年問題に対処しています。
[7] xs:dateTime
は展開表現ではなく既存の構文の自然な拡張によって1万年問題に対処しています。
(意図的かどうかは書かれていませんが) ISO 8601 に違反しますが、
XML Schema は ISO 8601 を規定ではなく参考として参照しているので、
構わないと考えているのでしょう。
[8] ISO 8601 から派生した独自の構文であるHTMLの日時形式は、 展開表現ではなく既存の構文の自然な拡張によって1万年問題に対処しています。
[22] MEW3 PktCDateLib, , https://web.archive.org/web/20001202204800/http://www3.gamewood.net/mew3/pilot/pocketc/pktcdate/index.html
[23] この PktCDateLib という Palm OS 用のライブラリーは RFC 2550 が西暦1万年問題に対処する従来手法の唯一知られる例として引いていました。 >>4
[24] このライブラリーは 「YYYYMMDD」 式の日付形式を採用していました。 >>22
[25] この方式の (「DDMMYYYY」のような他の方式に対する) 利点として、 そのままの大小が日の大小になることと、 年を5桁に拡張して西暦1万年問題対策とできることが挙げられていました。 >>22
[26] ただし本ソフトウェアは old Palm epoch を使っていたので、 西暦2031年までしか扱えませんでした。 >>22
[28] 当然ながら5桁に拡張しても99999年までしか記述できません。 次は6桁に拡張する必要が出てきます。
[5] に出版された4月1日のRFCである RFC 2550 は、インターネットにおける1万年問題を扱っており、 1万年問題を解決したRFC 2550の日時形式を定義しています。
[13] 単に年の桁数を増やすだけでなく、 ASCII 順での整列が日時の整列となることを重視しています。
[15] 年のみならず、月まで、日まで、時まで、 分まで、秒まで、任意の桁数の秒の小数部までと任意の精度の日時を表現できます。 粗い日時と細かい日時が混在する場合の整列は、 ASCII文字列の整列と同様に、粗い日時が細かい日時の最初の瞬間の前に来ます。
[16] 区切りの記号を使わず、年と秒の小数部以外は固定の桁数の
ASCII数字列となっています。どの部分も最大値の規定はなく、
実在する日時の最大値を超えた時は、次の存在する日時の直前の瞬間を表すことになっています。
(例えば A999991232
(12月32日) は B100000
の前の瞬間を表しています。)
[36] Y10K date は TAI の日時を表します。 >>4
[31] Y10K date 構文は無限の過去から無限の未来まで記述できますが、 実装は宇宙の寿命を考慮した限界を設けて構わないとされています。すなわち、 >>4
[35] 宇宙論の研究の進展でこのへんの規定は改訂する必要があるかもしれませんね?
[37] Y10K date は印字可能ASCII文字の列です。 >>4
[38] Y10K date は、 Y10K year の後に年内の日時を続けたものです。 >>4
[43] Y10K year は、 年番号によって記述方法が違います。 >>4
[47]
年が 10000 以上の年は、
A10000
,
...,
Z999999999999999999999999999999
,
^A1000000000000000000000000000000
,
...,
^Z99999999999999999999999999999999999999999999999999999999
,
...,
^^AA100000000000000000000000000000000000000000000000000000000
,
...
と表します。
>>4
この先頭にある桁数を表す記号列は、
ASCII文字列としての比較と年の大小が一致するように決められています。
[48]
先頭の記号列は、0個以上の ^
の後に、
1個以上の ASCII大文字を続けたものです。
>>4
[64]
ただし
^
と
ASCII大文字の数には制約があります。
>>4
^
の数[53] 先頭の記号列から年の桁数は次のように決まります。 >>4
[69] 1 年よりも前の年は、次の手順の結果で表します。 >>4
[84]
年の桁数はこのように定められていますが、それに満たなくても妥当な
Y10K date
ではあるとされます。末尾に 0
を書き足したものと同じ日付を表すとされます。
例えば
A1
は
A10000
と同じで1万年を表します。
>>4
[80] 年内の日時は、 任意個のASCII数字を続けたものです。 先頭から順に、 月、日、時、分、秒、ミリ秒、マイクロ秒、 ナノ秒、ピコ秒、フェムト秒とどんどん細かい単位を表していきます。 >>4
[50] 月から秒までは、 それぞれ2桁で表します。 >>4
[51] 仕様書上明記されていませんが、 すべて10進数で表したものです。 1桁の数値は0埋めします。
[39]
月から秒までの数値には値域の制限がなく、
00
から
99
まですべてが構文上認められています >>4。
[81] 例えば
A99999
の最後の瞬間と
B100000
の最初の瞬間の間に
A999991232
が入ると例示されています >>4。
[83] 構文上は2桁単位での指定が義務付けられているのですが、
規定本文ではそうでもないようなことが書かれていて、
実際上1桁だけ書いた例も示されています。
例えば
A999992
は
A9999920
(99999年20月)
を表します。
>>4
[40] 日時の比較では、 部分文字列になる日付はより小さいとします。 >>4
[49] その他はASCII文字列の比較が日時の比較と一致します。
[17] 4月1日に発行された RFC であり、 検討するのも野暮な話かもしれませんが、 現実的にはあまり使い勝手の良い日時形式ではないかもしれません。 (RFC 2550 はいい性質を供えたよい方式だと謳っていますがねw)
[18] 文字列としての整列を重視する余り、可読性を著しく落としていますし、 1万年以上で使われる英字や記号は人間が扱うには難しすぎる (ミスする可能性が高い) ものです。 整数時刻系などの完全に機械処理向けの日時形式を使わず、 人間向けの年月日の構造を残した日時形式を敢えて採用する場面では、 こうした欠点は致命的です。
[42] 西暦年やグレゴリオ暦、24時間制が暗黙の前提となっています。 それ以外の紀年法や暦法や時法には対応していません。
[86] RFC 2550 は、 未解決の課題として、 Aztec, Bhuddist, Jewish, Muslim, and Hittite calendars の日付など異なる calendar system の日付は直接は比較できない、 まず common calendar に変換しなければならない、 と述べていました。 >>4
[87] どうやら著者らはグレゴリオ暦等以外の日付の記述には使えるが、 比較には支障があると認識していたようです。 実際には問題はそう単純ではありません。例えば閏月の月名は整数化できませんし、 元号やチベット暦の年数も整数化できません。
[88] RFC 2550 は、 将来年の re-numbering があると対応できない、 新たな 「Year 0」 が出現して常用に供されると古い日付は調整しなければならなくなる、 >>4 としていました。
[89] つまり将来の改元の可能性は視野に入れつつ (ただし東洋式の元年ではなく0年から起算)、 その場合に構文はそのままで元期を変えるという構想だったようです。
[90] 更には、 年や日などが地球中心で将来の太陽系の終焉後に問題となり得ること、 将来の惑星間、銀河間の時刻同期手法の合意が未形成であること、 宇宙の終焉後の日付のゆくえが不透明であることが、 課題として指摘されていました。 >>4
[10] RFC 3339の日時形式は4桁固定で、西暦1万年問題未対応です。
[29] インターネットメールの日時形式は4桁以下で、西暦1万年問題未対応です。
[1] 西暦10000年問題 - Wikipedia ( 版) 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 ( 版) http://en.wikipedia.org/wiki/Year_10%2C000_problem (名無しさん)
[3] 一万年問題のポイントの1つは、そんな先のことまで考えずとも、 もっと若い年号すらまともに扱えない (のがほとんどである) ことではありますまいか。
[30] 10000年問題 ‐ 通信用語の基礎知識, https://www.wdic.org/w/TECH/10000%E5%B9%B4%E5%95%8F%E9%A1%8C
[20] 9340年問題 ‐ 通信用語の基礎知識 () http://www.wdic.org/w/TECH/9340%E5%B9%B4%E5%95%8F%E9%A1%8C
[91] 西暦10000年問題 - アンサイクロペディア (, ) https://ja.uncyclopedia.info/wiki/%E8%A5%BF%E6%9A%A610000%E5%B9%B4%E5%95%8F%E9%A1%8C