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