Unix タイムスタンプを人間が判読できる日付に変換する方法
簡単な回答
Unix タイムスタンプ = 1970-01-01 00:00:00 UTC からの秒数 (またはミリ秒)。 JavaScript の new Date(timestamp * 1000) (秒) または new Date(timestamp) (ミリ秒) の日付に変換します。 Math.floor(date.getTime() / 1000) を使用して日付を元に戻します。タイムスタンプ コンバーターを使用すると、ブラウザで両方を瞬時に行うことができます。
導入
Unix タイムスタンプ (エポック時間または POSIX 時間とも呼ばれます) は、うるう秒を除いた、1970-01-01 00:00:00 UTC (Unix エポック) からの経過秒数です。これは、タイムゾーンに依存せず、簡単にソートできる単一の整数であるため、コンピューティングにおける時間の共通語です。ほとんどのシステムでは秒が使用されます。 JavaScript と多くのデータベースはミリ秒を使用します。
ステップバイステップ
-
秒とミリ秒を理解する
ほとんどのバックエンド システムと APIs は秒 (2286 までの 10 桁のタイムスタンプ) を使用します。 JavaScript の Date と Java の Instant はミリ秒 (13 桁) を使用します。 API がどの単位を想定しているかを常に確認してください。これらを混合すると、日付が 1000 倍ずれます (約 31 年ずれます)。
-
タイムスタンプを読み取り可能な日付に変換する
タイムスタンプをタイムスタンプ コンバータに貼り付けます。長さによって秒とミリ秒 (10 桁と 13 桁) を検出し、日付を UTC とローカル タイムゾーンで表示します。コード内: new Date(1700000000 * 1000).toISOString() は「2023-11-14T22:13:20.000Z」を返します。
-
日付をタイムスタンプに変換する
コンバータに日付と時刻を入力します。 Unix タイムスタンプを返します。コード内: Math.floor(new Date('2026-08-28T12:00:00Z').getTime() / 1000) はエポック秒を返します。現地時間のあいまいさを避けるために、常にタイムゾーン (Z またはオフセット) を指定してください。
-
タイムゾーンを正しく処理する
Unix タイムスタンプは常に UTC であり、タイムゾーンはありません。プレゼンテーション層のみでローカル表示に変換します。現地時間をタイムスタンプとして保存しないでください。 UTC を保存し、表示上で変換します。 DST を正しく処理するには、IANA タイムゾーン名 (America/New_York) を Intl.DateTimeFormat とともに使用します。
-
日付間の差異を計算する
2 つのタイムスタンプを減算して、差を秒 (またはミリ秒) で取得します。分は 60、時間は 3600、日は 86400 で割ります。人間にわかりやすい範囲を指定するには日付差異ツールを使用し、生年月日ベースの年齢には年齢計算ツールを使用します。
例
Unixの時代
入力: 0 (seconds)
出力: 1970-01-01 00:00:00 UTC
エポックから 10 億秒後
入力: 1000000000 (seconds)
出力: 2001-09-09 01:46:40 UTC
UTC での 2026 年の始まり
入力: 2026-01-01T00:00:00Z
出力: 1767225600 (秒) / 1767225600000 (ミリ秒)
2 つの日付の違い
入力: 1767225600 - 1700000000
出力: 67225600 seconds = 778.08 days ≥2 years 31 days
よくある問題
- 秒とミリ秒の混乱: 10 桁のタイムスタンプをミリ秒として読み取ると、1970 年の日付がわかります。秒として読み取られる 13 桁のタイムスタンプは 32 ビット整数をオーバーフローします。桁数によって単位を検出するか、API に明示的に文書化します。
- 現地時間をタイムスタンプとして保存: タイムスタンプは UTC です。 UTC-5 に設定されたブラウザで Date.now() を計算し、その結果をローカルとして扱う場合、DST 移行により年に 2 回、データが 1 時間シフトされます。
- 2038-01-19 03:14:07 UTC (Y2038) の 32 ビット オーバーフロー: 符号付き 32 ビット秒タイムスタンプを使用するシステムは、この時点以降の日付を表すことができません。新しいシステムでは 64 ビットまたはミリ秒のタイムスタンプを使用します。
- うるう秒は無視されます。Unix タイムスタンプはうるう秒をスキップするため、2 つのタイムスタンプの差は経過した SI 秒数と等しくなりません。ほとんどのアプリケーションはこれを無視できます。高精度の天文学や金融にはそれができません。
ヒント
- タイムスタンプは常に UTC で保存および送信します。 IANA タイムゾーンで Intl.DateTimeFormat を使用して、表示レイヤーでのみ現地時間に変換します。
- 人間が判読できる APIs と保存用のタイムスタンプには ISO 8601 文字列 (例: 2026-08-28T12:00:00Z) を使用します。ISO 文字列はタイムゾーンを明示的に保持し、明確です。
- タイムスタンプを比較する場合は、両側で同じ単位 (秒またはミリ秒) を使用してください。単位の不一致は、最も一般的な日付のバグの 1 つです。
- タイムスタンプ コンバーターを使用して、デバッグ中に API 応答の健全性をチェックします。UTC と現地時間の両方が表示されるため、タイムゾーンのバグをすぐに見つけることができます。