エポックミリ秒のタイムスタンプとは?
Unixエポックタイムスタンプとは、「エポック」と呼ばれる基準時刻 1970-01-01 00:00:00 UTC からの経過時間を表す数値です。多くのプログラミング言語やAPI(JavaScriptの Date.now()、Javaの System.currentTimeMillis()、各種JSONデータなど)では、この値を「秒」ではなく ミリ秒 で扱います。このツールは、その無機質な数値を、人が読みやすいUTCの日時へと変換します。
このツールの使い方
入力欄にミリ秒単位のタイムスタンプを貼り付けるか入力して、実行してください。ツールはまず値を1000で割って秒数(整数)を求め、エポックを起点としてカレンダー上の日付に対応づけます。結果としてISO 8601形式の文字列(例:2023-11-14T22:13:20Z)に加え、年・月・日・時・分・秒への分解結果が得られます。すべてUTC基準なので、お使いの環境のタイムゾーンに左右されません。
計算式の解説
変換はわずか2ステップです。まず次のように秒未満の端数を切り捨てます。
$$ t_{s} = \left\lfloor \frac{\text{Epoch Time (ms)}}{1000} \right\rfloor $$次に、1970年1月1日の午前0時にその秒数を加算します。
$$ \text{Date}_{\text{UTC}} = \text{Epoch}_{1970} + \frac{\text{Epoch Time (ms)}}{1000}\ \text{seconds} $$ここで \(\text{Epoch}_{1970} = \text{1970-01-01T00:00:00Z}\) です。うるう年や月ごとの日数の違いなどは、カレンダーの計算ロジックが自動的に処理します。
計算例
例として 1,700,000,000,000 ミリ秒を考えます。1000で割ると1,700,000,000秒。
$$ \frac{1{,}700{,}000{,}000{,}000}{1000} = 1{,}700{,}000{,}000\ \text{seconds} $$これをエポックに加えると 2023-11-14T22:13:20Z となり、UTCで2023年11月14日 22時13分20秒を表します。
よくある質問
結果はローカル時刻ですか? いいえ。あいまいさを避けるため、出力は常にUTC(協定世界時)です。日本時間が必要な場合は、UTCに9時間(+09:00)を加えてください。同様に、他の地域では各タイムゾーンのオフセットを加減算する必要があります。
手元の値がミリ秒ではなく秒の場合は? 入力前に秒単位のタイムスタンプを1000倍する(つまり末尾に0を3つ付け足す)だけでOKです。
なぜ結果がはるか未来や1970年付近の日付になることがあるの? 秒単位の値をミリ秒として入力すると1970年付近になり、すでにミリ秒の値にさらに0を付け足すとはるか未来の日付になります。単位が必ずミリ秒であることを確認してください。