Unixタイムスタンプとは?エポック時間の完全な解説
簡単な回答
Unix タイムスタンプは、1970 年 1 月 1 日の 00:00:00 UTC (Unix エポック) からの秒数です。タイムゾーンに依存しないため、比較が簡単です。 JavaScript はミリ秒 (13 桁) を使用します。 Unix とほとんどの APIs は秒 (10 桁) を使用します。無料のタイムスタンプ コンバーターを使用して、タイムスタンプと人間が判読できる日付の間で変換します。
導入
Unix タイムスタンプ (Unix エポック時間、POSIX 時間、または Unix 時間とも呼ばれます) は、1970 年 1 月 1 日 00:00:00 UTC (Unix エポックとして知られる瞬間) から経過した秒数です。タイムスタンプは、タイムゾーンに依存せず (常に UTC)、比較しやすく (単純な整数比較)、コンパクトであるため、オペレーティング システム、データベース、ログ、APIs で広く使用されています。ただし、人間が判読できるものではありません。1693526400 は変換しなければ意味がありません。このガイドでは、タイムスタンプとは何か、およびその使用方法について説明します。
ステップバイステップ
-
Unix エポックを理解する
Unix エポックは、1970 年 1 月 1 日の協定世界時 (UTC) 00:00:00 です。 Unix タイムスタンプは、この瞬間からの秒数です。正のタイムスタンプはエポック以降です。負のタイムスタンプ (一部のシステムでサポートされている) はその前にあります。
-
秒とミリ秒を区別する
Unix タイムスタンプは通常、秒単位です (2026 年時点では 10 桁、例: 1693526400)。 JavaScript の Date.now() および Date.getTime() はミリ秒 (13 桁、例: 1693526400000) を返します。 API がどの単位を想定しているかを常に確認してください。これらの単位の混合は最も一般的なタイムスタンプのバグです。
-
タイムゾーンの独立性を理解する
Unix タイムスタンプは常に UTC です。ユーザーのタイムゾーンには依存しません。特定のタイムゾーンのタイムスタンプを表示するには、タイムスタンプを日付に変換し、タイムゾーン オフセットを適用します。これにより、タイムスタンプは保存と比較に最適になります。
-
2038 年問題について学ぶ
タイムスタンプに 32 ビットの符号付き整数を使用するシステムは、2038 年 1 月 19 日 03:14:07 UTC にオーバーフローが発生します。これが「2038 年問題」です。 64 ビット整数または JavaScript 数値 (64 ビット浮動小数点) を使用するシステムは影響を受けません。最新のシステムはほぼ 2038 年対応可能ですが、従来の組み込みシステムは安全ではない可能性があります。
例
既知の日付のタイムスタンプ
入力: 2023-09-01 00:00:00 UTC
出力: 1693526400 (秒) または 1693526400000 (ミリ秒)
Unixの時代
入力: 1970-01-01 00:00:00 UTC
出力: 0
2038 年問題境界
入力: 2038-01-19 03:14:07 UTC
出力: 2147483647 (最大 32 ビットの符号付き整数)
よくある問題
- 秒とミリ秒の混合 - JavaScript はミリ秒 (Date.now()) を使用し、Unix とほとんどの APIs は秒を使用します。ミリ秒を秒に変換するには、1000 で割ります。逆にするには1000を掛けます。
- タイムゾーンの混乱 - タイムスタンプは UTC です。表示する際はユーザーのローカルタイムゾーンに変換するか、UTCを指定してください。生のタイムスタンプにオフセットを適用しないでください。
- 2038 年問題 - 32 ビット符号付き整数のタイムスタンプが 2038 年 1 月 19 日にオーバーフローします。これを回避するには、64 ビット整数または JavaScript 数値を使用してください。
- 負のタイムスタンプ - 1970-01-01 より前の日付には負のタイムスタンプが付きます。一部のシステムではサポートされていません。
ヒント
- API が秒を想定しているのかミリ秒を想定しているのかを常に確認してください。これは最も一般的なタイムスタンプのバグです。
- APIs で人間が判読できるタイムスタンプには ISO 8601 文字列 (例: "2023-09-01T00:00:00Z") を使用します。ストレージと計算には Unix エポックを使用します。
- JavaScript Date.now() はミリ秒を返します。 1000 で割ってフロアを計算すると秒が得られます。
- タイムスタンプ コンバータを使用して、タイムスタンプとブラウザで人間が判読できる日付の間で変換します。