JavaScriptで日時を比較する方法!getTimeとvalueOfを使って簡単に理解
生徒
「JavaScriptで2つの日付を比べたいんですけど、どうやればいいですか?」
先生
「JavaScriptでは、Dateオブジェクトを作って、getTime()やvalueOf()を使うと簡単に比較できます。」
生徒
「getTimeとかvalueOfって何ですか?難しそうです…」
先生
「日付はコンピュータの中では数値で管理されています。getTimeやvalueOfはその数値を取り出すメソッドで、ミリ秒単位での比較ができます。」
1. Dateオブジェクトで日付を作る
まずは比較したい日付をDateオブジェクトで作ります。Dateオブジェクトは年・月・日・時・分・秒を指定して作ることもできます。
const date1 = new Date(2025, 10, 18, 10, 0, 0); // 11月18日 10時
const date2 = new Date(2025, 10, 18, 15, 30, 0); // 11月18日 15時30分
console.log(date1);
console.log(date2);
2025-11-18T01:00:00.000Z
2025-11-18T06:30:00.000Z
注意点として、JavaScriptの月は0から始まるため、11月は10になります。
2. getTime()で日時を数値に変換
Dateオブジェクトを直接比較することはできますが、確実に正確な比較をしたいときはgetTime()を使います。これは1970年1月1日からのミリ秒数を返します。
const time1 = date1.getTime();
const time2 = date2.getTime();
console.log(time1);
console.log(time2);
1761050400000
1761072600000
このように数値に変換すると、大きい方が後の日時、小さい方が前の日時だとわかります。
3. valueOf()でも同じことができる
valueOf()もDateオブジェクトのミリ秒値を返します。getTime()と同じ結果になるので、どちらを使っても構いません。
console.log(date1.valueOf());
console.log(date2.valueOf());
1761050400000
1761072600000
valueOfを使うと、演算や比較に直接使える数値が得られます。
4. 日付を比較する例
getTime()やvalueOf()で取得した数値を使って、簡単に日付の比較ができます。
if (date1.getTime() < date2.getTime()) {
console.log("date1はdate2より前の日付です。");
} else if (date1.getTime() > date2.getTime()) {
console.log("date1はdate2より後の日付です。");
} else {
console.log("date1とdate2は同じ日時です。");
}
date1はdate2より前の日付です。
この方法なら、正確に日時の順序を判定できます。イベントの開始・終了日時の比較や、期限のチェックなどで非常に役立ちます。
5. Dateオブジェクトの比較のポイント
日付の比較で重要なのは、Dateオブジェクトそのものではなく、getTime()やvalueOf()で取得した数値を比較することです。これにより、タイムゾーンやミリ秒まで正確に比較できます。
プログラミング未経験でも、数値で比較するイメージを持てば理解しやすいです。日付は見た目だけでなく、コンピュータ内部ではミリ秒で管理されているということを覚えておきましょう。
この記事の本文の日本語文字数(サンプルコード除く)は:2,812文字