日時桁溢れ問題

日時桁溢れ問題

[1] 計算機システムなどの日時の処理では、 日時の構成要素が扱える (当初設計時に想定した) 値域を超えることがあり、問題となります。

[18] 設計時の想定では遠い将来の日時だったとしても、 思いの外そのシステムが長生きするのはよくあることです。

[19] 逆パターンはそれほど多くありませんが、 想定よりも応用が広がり、過去の日時の記述の必要が生じるという可能性もなくはありません。


[38] 情報交換用日時形式にせよ、情報処理用内部形式にせよ、 実用上は日時の記述に使うデータサイズに制限を設けざるを得ません。 制限を取り払ってどれだけでも過去の日時将来の日時を表現可能にすると、 RFC 2550の日時形式のような扱いづらい形式になってしまいます。

[39] CPUプログラミング言語整数型が64ビットの場合、 それより大きな整数を扱うには特別な処理が必要となります。 日時を大きな整数で扱うと、 近い日時の計算も含めてすべての日時計算が煩雑で低速になってしまいます。

[22] 2000年問題への対処も、よくて9999年まで問題を先送りできたに過ぎませんでした。 実際には数十年程度の先送りで延命させたシステムも少なくありませんでした。 桁溢れ問題への本質的な対処は困難です。

年の桁溢れ

[5] 発症パターンとして、

... というのがあります。

[10] 年号桁溢れの問題

元号コードの桁溢れ

[2] 元号コード

整数時刻系の桁溢れ

[3] 整数時刻系および時間変数の桁溢れ

循環型日時系

[14] 干支GPS時など同じ名前の日時が一定期間経過後に繰り返される日時形式では、 当然ながら一周する期間を超えた範囲を扱うと日時を一意に識別できなくなります。

[17] 昭和は64年まであったため、 元号干支だけではを一意に特定できません。

[15] 2000年問題や100年問題もこの一種とも言えます。

整列

[4] 狭義の桁溢れ以外に、同じ数と仮定して文字列として整列させていたとき、 前提が崩れて順序がおかしくなるという問題が生じる場合もあります。

関連

[21] 旧暦2033年問題は性質が異なります。

メモ