UNIX時間(ユニックスじかん)またはUNIX時刻(ユニックスじこく、UNIX time(ユニックスタイム)、POSIX time(ポジックスタイム))とはコンピューターシステム上での時刻表現の一種。協定世界時 (UTC) での1970年1月1日午前0時0分0秒(UNIXエポック)から形式的な経過秒数として表される。

真の経過秒数ではなく、その間に挿入された閏秒を引き、削除された閏秒を加えた値である。大多数のシステムで採用されている。

UNIX系のオペレーティングシステム(データ型はtime_t)だけでなく、他の多くのオペレーティングシステムにおいてもこの表現方法が用いられている。システム内部では64ビット符号付整数(signed int)や64ビット倍精度浮動小数点数で扱われていることが多い。ここで、以前は多かった32ビット整数で扱われていた場合で、符号付きであった場合、その最大値 2,147,483,647 を超えると負の値になり、正しく時刻を扱えなくなるという問題がある。これを2038年問題という。

協定世界時 (UTC) との関係

UNIX時刻はシステム依存だが、大多数のシステムでは、協定世界時 (UTC) の時刻に基づき、1970年1月1日午前0時0分0秒(UNIXエポック)からの経過秒数を、閏秒の存在を無視し形式的な差を計算した値に等しい。したがって正の閏秒1秒が挿入された時刻を挟んだ2秒間において、UNIX時刻の値は1秒しか値が進まない。システムによっては、前後のある程度の時間に分散させてズレを吸収するものもある。また閏秒の前後での、秒より細かい時刻の扱いについては、システムにより異なることがある(特に、閏秒によって時刻が1秒巻き戻ったかのように見える場合もあり得るので注意が必要)。

表現できる日付の範囲

UNIXエポックからの経過時間を表現する際の単位として、秒以外にも、様々な単位を使うことができ、秒とナノ秒が利用されることが多めであるが、最初の Java や JavaScript はミリ秒を採用していた(java.lang.System.currentTimeMillis() など)。表現するための数値として64ビット符号付き整数が使われることが多いが、64ビット倍精度浮動小数点数が使われることもある(Pythonのtime.time()など)。かつては単位を秒として32ビット符号付き整数が使われたこともあったがこれは2038年までしか表現できない。

UNIX時刻の表示例

プログラミング言語やシェルからの利用例

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以降ではスクラッチパッド)

javascript:window.alert(Math.floor((new Date()).getTime()/1000))

C言語で現在のUNIX時刻を表示するプログラム

脚注

注釈

出典

関連項目

  • time_t
  • 2001年9月9日問題
  • 2038年問題
  • ユリウス通日 - ユリウス暦紀元前4713年1月1日の正午(世界時)からの日数。天文学で使われる。
  • 時刻#コンピュータの時法

外部リンク

  • UNIX時間変換ツール
  • UNIX時間⇒日付変換
  • UNIXtime時刻相互変換ツール
  • UNIXTIME相互変換ツール - konisimple
  • Online Conversion - Unix time conversion(英語)

Time (UNIX) Time (Unix) JapaneseClass.jp

UNIX Time now

Gallery Unix Time Clock Hackaday.io

Unix time Simple English Wikipedia, the free encyclopedia

How To Check Unix Time Cousinyou14