UNIX時間(POSIX時間)
コンピューターの内部で使う時間表現。秒単位の時間表現だが、ミリ秒単位で扱うプログラミング言語も多い。
協定世界時 (UTC) の1970年1月1日午前0時0分0秒(UNIXエポック)をゼロ秒として、そこからの経過秒数で日時を表す。日時を表すものであるため閏秒調整を施しており、GPS時刻のように本当の経過秒数を表すものではない。この起点時刻はUNIXが実装された時にキリがよかったというだけで、それ以上の意味はないらしい。
2038年問題
2038年1月19日3時14分7秒(UTC)を過ぎると、一部のコンピューターが誤作動する可能性がある問題。
この日付はUNIXエポックから2147483647秒後であり、これは32ビット符号付き整数(int型)の最大値である。そのためUNIX時間をint型で扱っている場合、2038年にオーバーフローを起こして誤作動を起こしてしまう。
対策としては、64ビット符号付き整数(long型)を使用するのが一般的。その場合はおおよそ西暦3000億まで使えるようになる。そのころには地球がなくなっているはずなので、時間の計り方も変わっているだろうからまず問題ない。
何らかの都合で64ビット符号付き整数を使えない場合は、次善の策として32ビット符号なし整数(unsigned int型)を使う手もある。これだと2106年2月7日6時28分15秒まで使える。そのころに人類が健在かはわからないが地球は健在と思われるので、できればlong型にしたい。