UNIX時間(または
UNIX時刻、
POSIX時間とも呼ばれる)は、コンピュータシステムで広く用いられる
時刻表現の一種です。これは、
協定世界時(UTC)の
1970年1月1日午前0時0分0秒(
UNIXエポック)からの経過秒数を基準としています。
UNIX時間は、真の経過秒数ではなく、挿入された
閏秒を差し引き、削除された
閏秒を加味した値として計算されます。これは、実際の時間経過と若干のずれが生じる可能性があることを意味します。多くのシステムではこの方式が採用されていますが、
閏秒の扱いについてはシステムによって異なる場合があります。
システムでの表現
UNIX時間は、
UNIX系
オペレーティングシステムだけでなく、他の多くのシステムでも利用されています。内部的には、64ビット符号付き整数や64ビット倍精度浮動小数点数で扱われることが多いです。
かつては32ビット整数で
UNIX時間を扱っていたシステムも存在しましたが、この場合、2038年1月19日午前3時14分7秒(UTC)を過ぎると値がオーバーフローし、
時刻を正しく扱えなくなるという問題が発生します。これは「
2038年問題」として知られています。
UNIX時間は、基本的にはUTCに基づいています。ただし、
閏秒を考慮した上で、形式的な経過秒数として計算されるため、実際の時間経過とは異なる場合があります。例えば、
閏秒が挿入された場合、
UNIX時間の値は1秒しか進まないことがあります。
様々な時間単位
UNIX時間の表現には、秒の他にも様々な単位が使用されることがあります。秒とナノ秒がよく利用されますが、
Javaや
JavaScriptではミリ秒が用いられることもあります。また、数値を表現する際には、64ビット符号付き整数や64ビット倍精度浮動小数点数が利用されることがあります。
UNIX時間は、プログラミング言語や
シェルから利用することができます。以下にいくつかの例を示します。
UNIX/Linux シェルでの表示例:
UTCに変換:
`date -u -d '@1234567890'`
ローカル時刻に変換:
`date -d '@1234567890'`
BSD シェルでの表示例:
UTCに変換:
`date -jr '1234567890'`
ローカル時刻に変換:
`date -j '+%s'`
Webブラウザ (JavaScript) での表示例:
javascript
javascript:window.alert(Math.floor((new Date()).getTime()/1000))
C言語での例:
c
include
include
int main()
{
time_t current_time;
time(¤t_time);
printf("現在のUNIX時間: %ld
", current_time);
return 0;
}
関連情報
time_t: UNIX時間を取り扱うためのデータ型。
2001年9月9日問題: 特定のシステムで発生した日付関連の問題。
2038年問題: 32ビットシステムで発生する可能性のある問題。
ユリウス通日: 天文学で用いられる別の時刻表現。
時刻#コンピュータの時法: コンピュータにおける
時刻表現全般に関する情報。
外部リンク
UNIX%E6%99%82%E9%96%93%E5%A4%89%E6%8F%9B%E3%83%84%E3%83%BC%E3%83%AB'>UNIX時間変換ツール
UNIX%E6%99%82%E9%96%93%E2%86%92%E6%97%A5%E4%BB%98%E5%A4%89%E6%8F%9B'>
UNIX時間⇒日付変換
UNIXtime%E6%99%82%E5%88%BB%E7%9B%B8%E4%BA%92%E5%A4%89%E6%8F%9B%E3%83%84%E3%83%BC%E3%83%AB'>UNIXtime時刻相互変換ツール
UNIXTIME相互変換ツール - konisimple
*
Online Conversion - Unix time conversion(英語)