Yueseryueser.com

← ガイド一覧

Unix タイムスタンプ変換:10桁・13桁と秒/ミリ秒の見分け方

10桁(秒)または13桁(ミリ秒)のタイムスタンプを貼り付けると、ローカル時刻、UTC、ISO 8601 がすぐに表示されます。日時を選んで逆方向に変換することもできます。秒とミリ秒は1000倍違うため、ツールが値の大きさで自動的に判別します。

ツールを開く:Timestamp Converter

本当に必要な場面

ログに数字が1つだけあり、それがローカル時刻でいつなのか、UTC でいつなのかをすぐに知りたいときです。タイムゾーンをまたぐ調査では、両方を並べて見るほうが暗算より確実です。

データベースや API に書き込む前に、2026-10-25 15:30:00 を Unix 秒に変換し、時ずれがないか確認したいときです。秒を要求する API もあればミリ秒を要求する API もあり、1000倍を間違えると大きくずれます。

外部サービスが返す expires_at や iat を確認するときです。まず秒かミリ秒かを見極め、そのうえで変換した日時が妥当かを判断します。

失敗しないための手順

桁数で判断します。10桁は秒、13桁はミリ秒で、1000倍の違いがあります。このツールは絶対値が 10^11 以上かどうかで判定し、未満は秒、以上はミリ秒として扱います。そのため12〜13桁はミリ秒、11桁は秒のままです。小数を含む入力はミリ秒として扱います。迷ったら「現在時刻」を押して桁数を比べてください。

JavaScript では Date のコンストラクターがミリ秒を受け取るため、秒は1000倍します。new Date(sec * 1000) です。逆に秒を取得するときは Math.floor(Date.now() / 1000) とします。秒のつもりで Date.now() をそのまま渡すと、約1000倍の値になります。

タイムゾーンについて、ローカル時刻はブラウザのタイムゾーンで描画され、夏時間はそのタイムゾーンの規則に従ってブラウザが処理します。UTC と ISO の行は常に UTC で、ISO は 2026-10-25T07:30:00.000Z のような形式です。タイムゾーンを切り替える機能はないため、同じタイムスタンプでも別の端末ではローカル時刻が変わって見えますが、UTC は変わりません。

0 を「値なし」として使わないでください。0 は 1970-01-01T00:00:00Z という有効な時刻です。欠損を表すなら null を使い、読み取り側で明示的に判定してください。

2038年問題は、Unix 秒を32ビット符号付き整数で保存することに由来します。最大値 2,147,483,647 が 2038-01-19T03:14:07Z にあたります。このツールは JavaScript の Number と Date(倍精度浮動小数点数)を使うため影響を受けず、Date は約 ±8.64e15 ミリ秒まで扱えます。ただし保存先のデータベース列やサーバーが32ビットのままの場合は、別途確認が必要です。

代替手段と限界

コマンドラインでは、macOS は date -u -r 1761328800、Linux は date -u -d @1761328800 で UTC を直接表示できます。現在の秒は date -u +%s です。スクリプトでの一括変換に向いています。

コードではタイムゾーン対応の API を使ってください。Python の datetime.fromtimestamp(ts, tz=timezone.utc)、Java の Instant.ofEpochSecond、Go の time.Unix などです。タイムゾーンと書式を正しく扱えます。

ニューヨーク、ロンドン、東京の壁時計を同時に見たい場合や、2026-10-25T15:30:00+08:00 のようなオフセット付き ISO 文字列を解析したい場合は、タイムゾーンを選べるツールか日付ライブラリを使ってください。このツールは数値のタイムスタンプとローカル日時の入力だけを受け付け、日付の加減算も行いません。

よくある質問

10桁と13桁のタイムスタンプは何が違いますか?

単位です。10桁は Unix 秒、13桁はミリ秒で、1000倍の差があります。1761328800 秒と 1761328800000 ミリ秒は同じ瞬間です。ミリ秒を期待する API に秒を渡す(またはその逆)と、値が1000倍、または1000分の1になり、日時が大きくずれます。このツールは 10^11 未満を秒、以上をミリ秒として扱い、小数を含む入力はミリ秒として扱います。

2038年問題はこのツールに影響しますか?

影響しません。2038年問題は Unix 秒を32ビット符号付き整数で保存することに由来し、最大値 2,147,483,647 が 2038-01-19T03:14:07Z にあたります。このツールは倍精度の JavaScript Number と Date を使うため、2038年より先も変換できます。Date 自体の上限は約 ±8.64e15 ミリ秒です。ただし書き込み先のデータベース列やサーバーが32ビットのままの場合は、別途確認してください。

タイムスタンプが 0、または負の値の場合は何を意味しますか?

0 は Unix エポックの 1970-01-01T00:00:00Z で、有効な時刻です。null の代わりではありません。負の値はエポックより前の時刻で、これも有効です。欠損を表したい場合は 0 ではなく null を使い、読み取り側で明示的に判定してください。0 は実在の日時として表示されるため、不具合が見えにくくなります。

関連ツール:Timestamp Converter