Unixタイムスタンプ解説:エポック時間とは?
1749673200のような数字を見て、それが日付と時刻を表すと言われたことがあるなら、それはUnixタイムスタンプです。「エポック時間」や「Unix時間」とも呼ばれるこのシステムは、コンピューターが時間を追跡する仕組みの基幹です。詳しく解説しましょう。
Unixタイムスタンプとは?
Unixタイムスタンプは、1970年1月1日 00:00:00 UTC(「Unixエポック」と呼ばれる)からの経過秒数です。この起点は、1970年代初頭にUnixオペレーティングシステムが開発されたときにやや任意に選ばれました。
例:
0 = 1970年1月1日 00:00:00 UTC1000000000 = 2001年9月9日 01:46:40 UTC1749673200 = 2026年6月12日 01:00:00 UTCなぜ有用なのか?
Unixタイムスタンプにはコンピューティングにおいていくつかの利点があります:
実践におけるUnixタイムスタンプ
JavaScript
``javascript
// 現在のタイムスタンプを取得
Date.now() // ミリ秒を返す
Math.floor(Date.now() / 1000) // 秒を返す
// タイムスタンプを日付に変換
new Date(1749673200 * 1000)
`
Python
`python
import time
time.time() # 現在のタイムスタンプ(秒)
time.gmtime(1749673200) # struct_timeに変換
`
データベース
ほとんどのデータベースは内部的にUnix時間や類似の表現でタイムスタンプを保存します:
PostgreSQL: EXTRACT(EPOCH FROM NOW())
MySQL: UNIX_TIMESTAMP()
MongoDB: エポックからのミリ秒として日付を保存
2038年問題
興味深い問題があります:多くのシステムはUnixタイムスタンプを32ビット符号付き整数として保存しており、表現できる最大値は
2,147,483,647です。これは2038年1月19日 03:14:07 UTCに対応します。
この瞬間の後、タイムスタンプはオーバーフローして負の数になり、システムが日付を1901年として解釈する可能性があります。これはUnixシステムにとってのY2K問題に似ています。
解決策はシンプルです:64ビット整数を使えば、何十億年も未来の日付を表現できます。ほとんどのモダンなシステムはすでにこの移行を完了していますが、レガシーシステムはまだリスクがあるかもしれません。
ミリ秒タイムスタンプ
一部のシステムはより高い精度のために秒ではなくミリ秒を使用します:
JavaScriptの Date.now()はミリ秒を返す
Javaの System.currentTimeMillis()はミリ秒を使用
秒のタイムスタンプに1000を掛けるとミリ秒になります
面白いタイムスタンプ
1234567890 = 2009年2月13日 23:31:30 UTC —世界中のギークが祝った
1111111111 = 2005年3月18日 01:58:31 UTC
1500000000` = 2017年7月14日 02:40:00 UTC