JavaScript - 日付/時刻比較、3つの方法

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

codechachaCopyright ©2019 codechacha