Unixタイムスタンプ変換ツールとは?
Unixタイムスタンプ(エポック時間とも呼ばれます)とは、1970年1月1日 00:00:00 UTC からの経過秒数を表す整数値です(うるう秒は含みません)。このツールは、その1つの整数を人が読める形のUTCカレンダー日付・時刻へ変換し、曜日まで表示します。
使い方
秒単位のUnixタイムスタンプ(例:1700000000)を貼り付けるか入力して送信するだけ。UTCでの年・月・日・時・分・秒に加え、曜日と、エポックからの経過日数(生の値)も合わせて返します。
計算式のしくみ
まず秒数を分解します。\(\text{Days} = \left\lfloor \text{ts} / 86400 \right\rfloor\) で日数を求め、その余りがその日の時刻になります。
$$\begin{gathered} \text{Days} = \left\lfloor \frac{\text{Timestamp}}{86400} \right\rfloor, \qquad s = \text{Timestamp} \bmod 86400 \\[1.5em] \text{where}\quad \left\{ \begin{aligned} \text{Hour} &= \left\lfloor \frac{s}{3600} \right\rfloor \\ \text{Minute} &= \left\lfloor \frac{s \bmod 3600}{60} \right\rfloor \\ \text{Second} &= s \bmod 60 \\ (\text{Y},\text{M},\text{D}) &= \text{civil}(\text{Days}) \end{aligned} \right. \end{gathered}$$続いて、Howard Hinnant 氏による有名な整数アルゴリズム「days_from_civil」の逆変換を使って、日数をカレンダー上の日付へ対応づけます。このアルゴリズムは年の開始を3月にずらすことで、うるう日が年末に来るようにし、例外処理を不要にしている点が特徴です。曜日は \((\text{Days} + 4) \bmod 7\) で求められます。これは1970年1月1日が木曜日だったためです。
計算例
ts = 1,700,000,000 の場合:\(\text{Days} = 19675\)、余り = 72800秒 = 22:13:20 となります。カレンダー日付の変換アルゴリズムにより、19675日目は 2023-11-14 に対応します。したがって結果は 2023-11-14 22:13:20 UTC です。
よくある質問
タイムゾーンには対応していますか? いいえ。出力は常にUTCです。現地時間に変換するには、お住まいの地域のUTCオフセットを加えてください(例:日本標準時 JST は +9時間)。
ミリ秒はどう扱いますか? 入力は秒単位のみです。ミリ秒のタイムスタンプをお持ちの場合は、まず1000で割ってから入力してください。
なぜうるう秒を扱わないのですか? Unix時間そのものが定義上うるう秒を無視するため、この変換ツールも同様に扱いません。