UNIX時間
UNIX時間(ユニックスじかん)またはUNIX時刻(ユニックスじこく、UNIX time(ユニックスタイム)、POSIX time(ポジックスタイム))とはコンピューターシステム上での時刻表現の一種を指す。UNIXエポック、すなわち協定世界時(UTC)での1970年1月1日真夜中(午前0時0分0秒)の時刻からの形式的な経過秒数で表される。GPS時刻などとは異なり、大多数のシステムでは、本当の経過秒数を表すものではないので注意が必要である[1]。
UNIX系のオペレーティングシステム(データ型はtime_t)だけでなく、他の多くのオペレーティングシステムにおいてもこの表現方法が用いられている。システム内部では32ビットまたは64ビットの符号付整数(signed int)で扱われていることが普通であり、特に32ビットで扱われている場合においては符号付整数が取れる最大値 2,147,483,647 を超える時点で時刻を扱えなくなるという問題がある。これを2038年問題という。
| 例: 1371243038 (ISO 8601形式:2013-06-14 20:50:38Z) (このページが最後に生成されたUNIX時間) |
目次 |
協定世界時(UTC)との関係[編集]
UNIX時刻はシステム依存だが、大多数のシステムでは、協定世界時(UTC)の時刻に基づき、1970年1月1日午前0時0分0秒(UNIXエポック)からの経過秒数を、閏秒の存在を無視し形式的な差を計算した値に等しい。したがって正の閏秒1秒が挿入された時刻を挟んだ2秒間において、UNIX時刻の値は1秒しか値が進まない。
| 協定世界時(UTC) | UNIXエポックからの 本当の経過秒数[2] |
UNIX時刻 |
|---|---|---|
| 1998-12-31T23:59:59 | 915148820 | 915148799 |
| 1998-12-31T23:59:60 | 915148821 | 915148800 |
| 1999-01-01T00:00:00 | 915148822 | 915148800 |
| 1999-01-01T00:00:01 | 915148823 | 915148801 |
UNIX時刻の表示例[編集]
| UNIX時間 | 協定世界時(UTC) | 日本標準時(JST) |
|---|---|---|
| 0 | 1970-01-01T00:00:00 | 1970-01-01T09:00:00 |
| 100000000 | 1973-03-03T09:46:40 | 1973-03-03T18:46:40 |
| 1000000000 | 2001-09-09T01:46:40 | 2001-09-09T10:46:40 |
| 1234567890 | 2009-02-13T23:31:30 | 2009-02-14T08:31:30 |
| 2147483647 | 2038-01-19T03:14:07 | 2038-01-19T12:14:07 |
UNIX/Linuxのシェル上で、UNIX時間をUTCに変換する例
date -u -d '@1234567890'
*BSDのシェル上で、UNIX時間をUTCに変換する例
date -jr '1234567890'
UNIX/Linuxのシェル上で、UNIX時間をローカル時刻に変換する例
date -d '@1234567890'
*BSDのシェル上で、UNIX時間をローカル時刻に変換する例
date -j '+%s'
Webブラウザのアドレスバー(URL欄)にJavascriptを入力することで表示させる例(Firefox 6.0以降ではスクラッチパッド、[3])
javascript:window.alert(Math.floor((new Date()).getTime()/1000))
C言語で現在のUNIX時刻を表示するプログラム
#include <stdio.h> #include <time.h> int main(void) { time_t now; now = time(NULL); printf("%ld", now); return 0; }
関連項目[編集]
外部リンク[編集]
脚注[編集]
- ^ システム(例えばLinuxシステム等のGNU Cライブラリ(glibc))は、tz databaseを用いて本当の経過秒数に基づく時刻の方式に切り替え可能である。その場合は最新の閏秒情報を取得しシステムに反映させる作業が必要となる。
- ^ 協定世界時(UTC)が国際原子時(TAI)と同じSI秒を採用したのは1972-01-01T00:00:00Z以降であり、それ以前の協定世界時の1秒はSI秒とは異なる。
- ^ Internet Explorer9以降、Google Chrome13以降などでコピーペーストした場合は先頭に「javascript:」を追加してください