2036年問題 【year 2036 problem】
概要
2036年問題(year 2036 problem)とは、インターネットなどのIPネットワーク上での時刻合わせに用いられるNTP(Network Time Protocol)の仕様により、西暦2036年の特定の日時以降の日付と時刻を正しく扱えなくなる問題。また、それが原因で引き起こされることが懸念されている、コンピュータの一斉誤作動や社会的な混乱などの問題。NTPでは特定の日時を協定世界時(UTC)1900年1月1日午前0時からの経過秒数で表現するが、この値は32ビットの符号なし整数型のデータとして表される。この値の上限である42億9496万7295秒が経過するのはUTCで2036年2月6日6時28分15秒、日本時間(JST)では同日15時28分15秒であり、これを過ぎると正しく日時を表記できなくなる。
対策として、SNTPバージョン4(RFC 4330)では最上位ビットが0の場合は2036年2月6日6時28分16秒からの経過秒数を表すよう扱いを改める手法が提案されている。この変更により、1968年以前の日時は扱えなくなるという副作用がある。
NTPはコンピュータ間で現在の日付や時刻を同期させるためのプロトコルであり、遠い過去や未来の日時を記録したり伝達することには用いられないため、この方式でも致命的な問題は生じないと考えられている。なお、この手法では西暦2104年に再び同様の問題を生じるが、その時にはまた過去の日時を無効にして起点を未来側に移動すればよいと考えられている。
名称 | 問題の日付・時刻 | 要因 | 主な対象 |
---|---|---|---|
2000年問題 | 2000年1月1日~ | 西暦の下2桁で表した年データが十進数2桁の上限を超える | メインフレーム / COBOLプログラム等 |
昭和100年問題 | 2025年1月1日~ | 昭和に換算した年データが十進数2桁の上限を超える | メインフレーム / COBOLプログラム等 |
2036年問題 | 2036年2月6日6:28:15(UTC)~ | 1900年1月1日午前0時からの経過秒数が32ビット符号なし整数の上限を超える | NTPで時刻合わせしているシステム等 |
2038年問題 | 2038年1月19日3:14:08(UTC)~ | 1970年1月1日午前0時からの経過秒数が32ビット符号付き整数の上限を超える | UNIX系システム等 |
(2019.1.3更新)