JavaScript のタイムスタンプ
Date.now() はミリ秒を返します。これが相互運用バグ第 1 位です。Unix 秒には 1000 で割ってください。
試す — スタンプを貼り付け
—
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 です。
よくある質問
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 超の精度リスクがあります。
他ツールとの比較
| 機能 | Epoch(当サイト) | EpochConverter |
|---|---|---|
| ms 対秒の罠付き JS 完全解説 | はい | スニペットのみ |
| ページ上のライブデモ | はい | いいえ |
| Intl・現代の書式パターン | はい | 部分的 |
| 厳密 ISO 検証へのリンク | はい | いいえ |
| 無料・登録不要 | はい | はい |
2026年10月時点の epochconverter.com との比較です。変更があれば修正します。
関連ツール
その他のツール
相互検証のための独立した代替ツールです。掲載は推奨を意味しません。誤りがあればご連絡ください。