Unixタイムスタンプとは|秒とミリ秒の見分け方、2038年問題

ログやAPIのレスポンスに出てくる「1710000000」のような10桁の数字。これがUnixタイムスタンプです。本記事では、その仕組みと、実務で知っておきたい注意点を解説します。

Unixタイムスタンプは「1970年からの経過秒数」

Unixタイムスタンプは、1970年1月1日0時0分0秒(UTC)を基準(エポック)として、そこから何秒経過したかを表す数値です。この基準日のことを「Unixエポック」と呼びます。日時を1つの数値で表せるため、プログラムでの比較や計算がしやすく、ログの記録やAPIのやり取りで広く使われています。

秒とミリ秒、桁数で見分ける

タイムスタンプには、秒単位とミリ秒単位の2種類があり、見分け方は桁数です。2026年現在のタイムスタンプは、秒単位ならおおよそ10桁、ミリ秒単位なら13桁になります。

秒単位(10桁):     1742400000
ミリ秒単位(13桁): 1742400000000

桁数を見誤ると、日時への変換結果が大きくずれてしまいます(ミリ秒の数値を秒として扱うと、1970年付近の日付になってしまいます)。

JavaScriptでの扱い

JavaScriptのDateオブジェクトは、内部的にミリ秒単位のタイムスタンプを扱います。new Date(1710000000 * 1000)のように、秒単位のタイムスタンプは1000倍してから渡す必要があります。

2038年問題とは

古いシステムの一部では、タイムスタンプを32ビットの符号付き整数で扱っています。32ビットで表現できる最大値には限りがあり、2038年1月19日頃に上限に達して、日時が正しく扱えなくなる可能性があるとされています。これを「2038年問題」と呼びます。現在広く使われている64ビットの環境では、この問題は起きません。

タイムゾーンとの関係

Unixタイムスタンプ自体には、タイムゾーンの情報が含まれていません。同じタイムスタンプの値でも、日本時間(JST)で表示するか、協定世界時(UTC)で表示するかによって、見た目の日時が9時間ずれます。変換した日時を人に伝える際は、どのタイムゾーンで表示しているかを明記すると誤解を防げます。

まとめ

Unixタイムスタンプは、1970年からの経過秒数(またはミリ秒数)で日時を表す仕組みです。桁数で秒・ミリ秒を見分け、タイムゾーンの違いに注意すれば、ログやAPIの日時データを正確に読み取れます。

実際の変換はタイムスタンプ変換ツールから、JST・UTC・ISO 8601・相対時間表示まで、まとめて確認できます。

戻る