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アプリケーションを構築する際にこのガイドを参照してください。