こんにちは、さるまりんです。
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と評価されます。同値チェックの際は注意です。
次は計算を試してみたいと思います。
読んでくださってありがとうございました。
ではまた!