JavaScriptで日時を比較する方法

こんにちは、さるまりんです。

JavaScriptで文字列を日時に変換する方法は以前書かせてもらいました。

その時に登場したのがDateオブジェクトです。Dateオブジェクトにすると日時の計算をしたり、比較したりすることができます。今回はその比較についてメモしたいと思います。

getTime()の値で比較

Dateオブジェクトには1970年1月1日 00:00:00 UTC(世界協定時)からの経過時間をミリ秒で取得できるgetTime()メソッドがあります。これで取得した値の大小で比較します。

// parse()でDateオブジェクトに変換
var str = "2019/03/18 21:00:00";
var march18th9pm = Date.parse(str); 

// 現在の日時をもつDateオブジェクトを作成
var current = new Date();

// 現在は2019年3月18日 21:00:00よりも後なら
if (march18th9pm.getTime() < current.getTime()) {
  alert('約束の時間を過ぎちゃいました');
} else {
  // 同じ時間、もしくはそれ以前ならば
  alert('まだ間に合いますよ!');
}

getTime()で取得できるのは数値なので<>==で大小、一致をテストすることができます。

Dateオブジェクトのまま比較

Dateオブジェクトは<>を使ってそのまま比較することができます。

上のコードは次の通り置き換えることができます。

// parse()でDateオブジェクトに変換
var str = "2019/03/18 21:00:00";
var march18th9pm = Date.parse(str); 

// 現在の日時をもつDateオブジェクトを作成
var current = new Date();
// 現在は2019年3月18日 21:00:00よりも後なら
if (march18th9pm < current) {
  alert('約束の時間を過ぎちゃいました');
} else {  // 同じ時間、もしくはそれ以前ならば
  alert('まだ間に合いますよ!');
}

ここでひとつ注意です!

==ではDateオブジェクトが同じ日時かどうかをテストすることができません。

==は二つのオブジェクトが同じ物かをテストするための物なので、同じ日時を持つものでも、オブジェクトが違えばfalseと評価されます。同値チェックの際は注意です。

次は計算を試してみたいと思います。

読んでくださってありがとうございました。

ではまた!