#author("2018-05-02T09:38:05+00:00","default:admin","admin") #author("2018-05-02T09:40:10+00:00","default:admin","admin") *2025年問題 [#bc38d942] -[[IT業界における「2025年問題」とは?:https://www.change-makers.jp/technology/11317]] *2038年問題 [#ec20176e] -[[2025年問題の次は2038年問題!コンピュータの暦問題を探る(前編):https://www.change-makers.jp/technology/11350]] -[[2025年問題の次は2038年問題!コンピュータの暦問題を探る(後編):https://www.change-makers.jp/technology/11351]] -[[第25回 32ビット環境に迫る「2038年問題」 時計がおかしくなると……:http://www.itmedia.co.jp/enterprise/articles/1607/13/news020.html]] -[[第26回 32ビット環境に迫る「2038年問題」 検証における5つの疑問:http://www.itmedia.co.jp/enterprise/articles/1607/27/news004.html]] -[[第27回 32ビット環境に迫る「2038年問題」 検証で分かった事実:http://www.itmedia.co.jp/enterprise/articles/1608/10/news001.html]] **概要 [#z11fbdaf] -「西暦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億秒)しか認識できない **回避策 [#ldc2c0fa] -UNIX環境の場合は64ビットOSを利用する -C/C++言語を使ってプログラミングする際には、時刻を取得するときに32ビット以上の整数を使えるようにする -ただしその場合は、時刻を取得する際に多く使っている「time_t」変数の整数型の定義を変更しなければならない、もしくは別に時刻を取得するプログラムを作る必要がある -ANSI(米国規格協会)規格のtime_t変数は実装する際に、32ビットの符号付き整数になっていることが一般的なため