UNIXタイムとは?
UNIXタイム(エポック秒・Unix timestamp)とは、1970年1月1日00:00:00 UTC(協定世界時)からの経過秒数です。
例えば2024年1月1日0時(JST)は、UNIXタイムで1704034800になります。
コンピュータにとって日時の計算はこの「秒数」で行うのが最も簡単。だからサーバーのログ、データベース、APIレスポンスには必ずといっていいほどUNIXタイムが登場します。
エンジニアが使う場面
- Nginxログのタイムスタンプを読み解く
- データベースのcreated_atやupdated_atカラムの確認
- APIレスポンスの"timestamp"フィールドを人間が読める形に変換
- ログの時刻を2つ比較して「何秒かかったか」を計算
- JWTの有効期限(exp)の確認
- CloudWatchやDatadogのログ検索条件設定
使い方
- UNIXタイム → 日時: エポック秒を入力して「変換」
- 日時 → UNIXタイム: 年月日時分秒を入力して「変換」
- 「現在時刻」ボタンで現在のUNIXタイムを即表示
- タイムゾーン切り替え(JST/UTC)に対応
ミリ秒(ms)のUNIXタイムも入力できます。JavaScriptのDate.now()やJavaのSystem.currentTimeMillis()は秒ではなくミリ秒単位のため、÷1000して使います。
2038年問題とは
UNIXタイムには「2038年問題」という有名な問題があります。
32ビット符号付き整数でUNIXタイムを保存している古いシステムでは、2038年1月19日3:14:07 UTCを超えると数値がオーバーフローし、1901年の日付に戻ってしまいます。
現代の多くのシステムは64ビット整数を使用しており問題ありませんが、組み込みシステムや古いレガシーシステムでは今も課題です。
64ビット符号付き整数でのUNIXタイムは2920億年まで表現可能。現実的には問題ありません。
UTCとJSTの違い
UTC(協定世界時)は世界標準時。日本標準時(JST)はUTC+9時間です。
UNIXタイムはタイムゾーンを持たず、常にUTCを基準にしています。ログを見るとき「なぜ9時間ずれているのか」と悩むのは、UTCとJSTの変換が抜けている場合がほとんどです。
このツールではJSTとUTCを切り替えて変換できるため、タイムゾーンのミスを防げます。
このツールを作った理由
Webエンジニアとして働く中で、ログを解析するたびにコマンドラインで"date -d @1704034800"と打っていました。Windowsだと少し構文が違うし、いちいち覚えてられない。
ブックマークしておいてすぐ使える変換ツールが欲しくて、自分のポータルに作りました。