JavaScriptでエポックタイムスタンプを取得する方法

JavaScriptとNode.jsでエポックタイムスタンプを扱う完全ガイド。現在時刻の取得、日付の変換、ミリ秒と秒の処理、出力フォーマットを解説。

Programming

詳細な説明

JavaScriptでのエポックタイムスタンプ

JavaScriptのDateオブジェクトは内部的にUnixエポックからのミリ秒を使用します。ほとんどの他のシステム(データベース、API、Unixツール)は秒を使用するため、これを覚えておくことが重要です。

現在のエポックの取得

// ミリ秒(13桁)
Date.now();              // 1705312200000

// 秒(10桁)
Math.floor(Date.now() / 1000);  // 1705312200

エポックから日付への変換

// 秒から
const date = new Date(1705312200 * 1000);
console.log(date.toISOString());  // "2024-01-15T09:30:00.000Z"

// ミリ秒から
const date2 = new Date(1705312200000);

日付からエポックへの変換

// ISO文字列から
const epoch = Math.floor(
  new Date("2024-01-15T09:30:00Z").getTime() / 1000
);

// 日付コンポーネントから
const epoch2 = Math.floor(
  new Date(2024, 0, 15, 9, 30, 0).getTime() / 1000
);
// 注意:JavaScriptでは月は0始まりです!

カウントダウン計算

const target = new Date("2025-01-01T00:00:00Z").getTime();
const now = Date.now();
const remainingMs = target - now;
const remainingSeconds = Math.floor(remainingMs / 1000);
const days = Math.floor(remainingSeconds / 86400);
const hours = Math.floor((remainingSeconds % 86400) / 3600);

タイムゾーンの注意点

Date.now()はユーザーのタイムゾーンに関係なく常にUTCベースのミリ秒を返します。しかし、new Date(year, month, day)はローカルタイムゾーンで日付を作成します。精度が重要な場合は常にISO文字列またはUTCメソッドを使用してください。

ユースケース

カウントダウンタイマー、スケジューリング機能、またはUnixタイムスタンプを扱うJavaScriptアプリケーションを構築する際にこのガイドを参照してください。

試してみる — Epoch Countdown

フルツールを開く