JavaScript の Unix タイムスタンプ スニペット
現在のタイムスタンプの取得、Unix 秒またはミリ秒の Date オブジェクトへの変換、ブラウザ組み込み API での出力整形を行う JavaScript の例。
Current Unix timestamp (seconds)
Math.floor(Date.now() / 1000)Current Unix timestamp (milliseconds)
Date.now()Timestamp from a Date object
new Date().getTime()
// or
+new Date()Date object from Unix timestamp (seconds)
new Date(1700000000 * 1000)ISO 8601 string from timestamp
new Date(1700000000 * 1000).toISOString()
// → "2023-11-15T06:13:20.000Z"Formatted local string
new Date(1700000000 * 1000).toLocaleString()
new Date(1700000000 * 1000).toLocaleString("en-US", { timeZone: "America/New_York" })JavaScript のタイムスタンプの基本
JavaScript の Date は時間を Unix エポックからのミリ秒として保存します。ミリ秒が必要なときは Date.now() を、API が Unix 秒を期待するときは Math.floor(Date.now() / 1000) を使います。
よくある JavaScript の変換
秒単位の Unix タイムスタンプを Date に変換するときは、new Date() を呼ぶ前に 1000 を掛けます。UTC 出力には toISOString()、HTTP 風の出力には toUTCString()、特定のタイムゾーンが必要なときは Intl.DateTimeFormat を使います。
JavaScript の本番運用メモ
JavaScript のタイムスタンプのバグは、たいてい Date のミリ秒と API の秒を混同することから生じます。Date オブジェクトは UI の端にとどめ、単位が明確になってからのみ、API を通じて素の数値や ISO 文字列を渡します。ローカル時刻を表示するときは、ブラウザやサーバー間で結果を再現できるよう、名前付きタイムゾーンを指定した Intl.DateTimeFormat を使います。
- タイマー、アナリティクスのイベント、ブラウザストレージにエポックのミリ秒が必要なときは Date.now() を使う
- バックエンドのエンドポイントが Unix 秒を期待するときは Math.floor(Date.now() / 1000) を使う
- API が秒を送ってくるときは new Date(seconds * 1000) を使う
- JSON をラウンドトリップできる UTC 文字列には toISOString() を使う
関連する JavaScript リファレンス
FAQ
- Date.now() は Unix 秒を返すのか?
- いいえ。Date.now() はミリ秒を返します。API、データベース、コマンドラインツールが Unix 秒を期待する場合は、1000 で割って切り捨ててください。
- Date オブジェクトを JSON に保存すべきか?
- いいえ。まず値を数値または ISO 8601 文字列に変換してください。JSON にはネイティブの Date 型がないため、明示的な値の方がデバッグと比較が容易です。