JavaScript のタイムスタンプ

Date.now() はミリ秒を返します。これが相互運用バグ第 1 位です。Unix 秒には 1000 で割ってください。

[MOD.DEMO // TRY]

試す — スタンプを貼り付け

—

Now, in milliseconds

const nowMs = Date.now(); // 13 digits

Now, in Unix seconds

const nowS = Math.floor(Date.now() / 1000); // 10 digits

Stamp to Date

const d = new Date(ts * 1000); // seconds → ms!
const iso = d.toISOString(); // always UTC

Date back to stamp

const ts = Math.floor(d.getTime() / 1000);

Display for humans

d.toLocaleString(); // local for people
// store: ts · display: toLocaleString · wire: toISOString

タイムゾーンの落とし穴

×1000 なしの new Date(1712345678) は 1970 年 1 月を描画します。JavaScript はミリ秒を要求するからです。また toString() は現地、toISOString() は同じ瞬間の UTC を出力します。原則:保存は秒、表示は toLocaleString、送受信は toISOString です。

[DOC.FAQ // INDEX]

よくある質問

05 ITEMS
01 JavaScript で現在の Unix タイムスタンプを取得するには?

標準 10 桁秒は Math.floor(Date.now()/1000) です。素の Date.now() は 13 桁ミリ秒で、JS 内では正しくても Python・Go・MySQL では誤りです。切り上げではなく切り捨てで、次の秒への漏れを防ぎます。

02 new Date(ts) が 1970 年になるのはなぜ?

ミリ秒を期待する場所に秒を渡しています。1000 倍してください。new Date(ts*1000)。1970 年表示は秒・ミリ秒取り違えの特徴です。

03 ISO 8601 形式にするには?

new Date(ts*1000).toISOString() で 2024-04-05T11:34:38.000Z、常に UTC です。人への表示は現地帯の .toLocaleString() を使います。.toString() の出力を split しないでください。ロケール依存で解析不能です。

04 ISO 文字列をスタンプに戻すには?

Math.floor(Date.parse(iso)/1000) です。Date.parse は ISO 8601 を確実に扱えます。MM/DD/YYYY などの非 ISO は実装依存なので避け、下記 ISO ページで検証してください。

05 API では秒とミリ秒のどちら?

両方受け入れ、保存は秒です。桁数で判定し(1e12 以上はミリ秒)、契約を文書化して秒を返します。非 JS バックエンドはすべて秒を話し、float ミリ秒は JSON で 2^53 超の精度リスクがあります。

[DOC.COMPARE]

他ツールとの比較

機能Epoch(当サイト)EpochConverter
ms 対秒の罠付き JS 完全解説 はい スニペットのみ
ページ上のライブデモ はい いいえ
Intl・現代の書式パターン はい 部分的
厳密 ISO 検証へのリンク はい いいえ
無料・登録不要 はい はい

2026年10月時点の epochconverter.com との比較です。変更があれば修正します。

関連ツール

[DOC.LINKS]

その他のツール

相互検証のための独立した代替ツールです。掲載は推奨を意味しません。誤りがあればご連絡ください。