2025年問題 †
2038年問題 †
概要 †
- 「西暦2038年問題」とは、Linuxを含むUNIX環境やC/C++言語で記述したプログラムで、協定世界時(UTC)の2038年1月19日3時14分8秒を過ぎると、システムが正しく時刻を認識できなくなることをいう
- UNIXはシステム内部の時刻を、1970年1月1日0時0分0秒(UTC)からの経過秒数で保持している
- 経過秒数を表す時刻データには、32ビットの符号付き整数を使っている。先頭の1ビットは正負の符号を表すために使い、2の31乗までの秒数(約21億秒)しか認識できない
回避策 †
- C/C++言語を使ってプログラミングする際には、時刻を取得するときに32ビット以上の整数を使えるようにする
- ただしその場合は、時刻を取得する際に多く使っている「time_t」変数の整数型の定義を変更しなければならない、もしくは別に時刻を取得するプログラムを作る必要がある
- ANSI(米国規格協会)規格のtime_t変数は実装する際に、32ビットの符号付き整数になっていることが一般的なため
|