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

3 回閲覧されました
みなさんこんにちは、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行目が成立しなくなります。