JavaScriptの「.setHours(0, 0, 0, 0)」について簡単なサンプルコードで解説

JavaScriptの「.setHours(0, 0, 0, 0)」について簡単なサンプルコードで解説

6 回閲覧されました

みなさんこんにちは、joinioです。

今回は「.setHours(0, 0, 0, 0)」について簡単なサンプルコードを使って解説します。

「.setHours(0, 0, 0, 0)」とは

「その日の時刻を 00:00:00.000(深夜0時)にリセットする」為の JavaScriptのDateメソッドです。

引数の「(0, 0, 0, 0)」は第一引数から順に「(時, 分, 秒, ミリ秒)」の対応になっています。

下記のコードみたいに使います。

const date = new Date('2025-12-21 15:30:45');

date.setHours(0, 0, 0, 0);

console.log(date);

// 結果は「2025-12-21 00:00:00.000」

「.setHours(0, 0, 0, 0);」を使わないとどういう時に問題が発生するか

「new Date()」は動作した時のその日の分・秒も取得します。

これにより日時の比較の時に問題が発生する場合があります。

例で下記のコードで考えます。

const today = new Date();
const target = new Date('2025-12-21');

if (today > target) {
  console.log('今日以降');
}

2行目は「2025-12-21 00:00:00.000」を取得します。

1行目が動作した日時が「2025-12-21 00:10:00.000」の場合は4行目が成立します。

下記のコードに修正します。

const today = new Date().setHours(0, 0, 0, 0);  // この行を修正
const target = new Date('2025-12-21');

if (today > target) {
  console.log('今日以降');
}

この場合は1行目・2行目ともに「2025-12-21 00:00:00.000」を取得するので4行目が成立しなくなります。