JavaScriptで日付と時刻の情報を持つDateオブジェクトを比較する方法を紹介します。 Dateオブジェクトが持つ日付情報のみを比較でき、正確な時間情報まで比較して、誰が過去の時間で、誰が将来の時間かを比較できます。
1. 比較演算子(>、>=、<、<=)で日付/時刻を比較
比較演算子で 2 つの Date オブジェクトのサイズを比較できます。ある Date オブジェクトが他のオブジェクトより大きいということは、時間的に前にあるという(未来)意味です。 逆に、サイズが小さいということは、時間的に過去という意味です。
const date1 = new Date('2022-05-04');
const date2 = new Date('2022-05-05');
console.log(date1 > date2);
console.log(date1 >= date2);
console.log(date1 < date2);
console.log(date1 <= date2);
Output:
false
false
true
true
文字列をDateに変換する方法は、JavaScript - 文字列を日付(Date)に変換する方法を参照してください。
注意すべき点は、Dateオブジェクトは ==
または ===
でサイズを比較することはできません。等価演算子は、次のように常に false を返します。
const date1 = new Date('2022-05-05');
const date2 = new Date('2022-05-05');
console.log(date1 == date2);
console.log(date1 === date2);
Output:
false
false
2. Date.getTime() で日付/時刻を比較
Date.getTime()
は UTC 時間を millisecond として返します。 UTCは「1970/01/01」を0秒でこれまで流した時間を表現したものです。
millisecondなので、比較演算子を使用してサイズを比較することができ、また同等演算子で比較することもできます。
const date1 = new Date('2022-05-04');
const date2 = new Date('2022-05-05');
console.log('date1: ' + date1.getTime());
console.log('date2: ' + date2.getTime());
console.log(date1.getTime() > date2.getTime());
console.log(date1.getTime() >= date2.getTime());
console.log(date1.getTime() < date2.getTime());
console.log(date1.getTime() <= date2.getTime());
console.log(date1.getTime() == date2.getTime());
Output:
date1: 1651622400000
date2: 1651708800000
false
false
true
true
false
3.同じ日付(年/月/日)かどうかを比較する
Dateには日付と時刻の両方の情報があります。時間は無視して日付のみを比較したい場合は、日付情報のみを取得して比較できます。
getFullYear()
, getMonth()
, getDate()
で年/月/日情報を取得できます。この情報のサイズを比較してください。
以下の例は、時間は比較せず、日付のみが同じかどうかを比較する例です。
const isSameDate = (date1, date2) => {
return date1.getFullYear() === date2.getFullYear()
&& date1.getMonth() === date2.getMonth()
&& date1.getDate() === date2.getDate();
}
const date1 = new Date('2022-05-04 12:20:30');
const date2 = new Date('2022-05-04 15:30:40');
const date3 = new Date('2022-05-05 15:30:40');
console.log(isSameDate(date1, date2));
console.log(isSameDate(date2, date3));
Output:
true
false
4. 日付/時刻がすべて等しいかどうかを比較する
日付と時刻の両方を比較するときは、 getTime()
で比較してください。 getTime()
は UTC の millisecond なので、時間情報もすべて millisecond として計算され含まれるからです。
以下の例は、日付と時刻が等しいかどうかを比較する例です。
const isSameDateAndTime = (date1, date2) => {
return date1.getTime() === date2.getTime();
}
const date1 = new Date('2022-05-04 12:20:30');
const date2 = new Date('2022-05-05 15:30:40');
const date3 = new Date('2022-05-05 15:30:40');
console.log(isSameDateAndTime(date1, date2));
console.log(isSameDateAndTime(date2, date3));
Output:
false
true
Related Posts
- JavaScript - 現在のタイムスタンプを取得する
- Node.js - ファイル、ディレクトリの削除
- JavaScript - 文字列 空白 削除
- JavaScript sort() 関数、例の紹介
- JavaScript Set delete() 関数、値の削除
- JavaScript - 実行時間の測定方法
- JavaScript - 配列をオブジェクトに変換する4つの方法
- JavaScript - Mapの作成と初期化、3つの方法
- JavaScript - Map巡回、3つの方法
- JavaScript - Mapソート(キーまたはvalueでソート)
- JavaScript - オブジェクトに特定の値が存在することを確認する
- JavaScript - 数値がNaNであるかどうかを確認する方法
- JavaScript Enum (列挙型)
- JavaScript - 日付/時刻比較、3つの 方法
- JavaScript - 空の文字列の確認、2つの方法
- JavaScript - 最後の文字を削除する、4つの方法
- JavaScript - 配列を文字列に変換、3つの方法
- JavaScript - 複数行の文字列、3つの方法
- JavaScript - オブジェクトを文字列に変換する2つの方法
- JavaScript - 配列から重複排除、4つの方法
- JavaScript - 文字列の比較方法、5つの方法
- JavaScript - 文字列から数字のみを抽出する
- JavaScript - 配列のソート方法(昇順、降順)
- JavaScript - 文字列 切り出し(split、substr、substring、slice)
- JavaScript - Setを配列(Array)に変換する
- JavaScript - 文字列を配列(Array)に変換
- JavaScript - 関数の宣言方法
- JavaScript - 配列宣言、追加、削除などの基本的 な使用法のクリーンアップ
- JavaScript - 文字列を数値に変換する方法
- JavaScript - 文字列を結合する、接続する(concat、join、+)